国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

深入淺析JavaScript中的constructor

2019-11-20 10:14:36
字體:
來源:轉載
供稿:網友

定義和用法

constructor 屬性返回對創建此對象的數組函數的引用。

語法

object.constructor

constructor,構造函數,對這個名字,我們都不陌生,constructor始終指向創建當前對象的構造函數。

這里有一點需要注意的是,每個函數都有一個prototype屬性,這個prototype的constructor指向這個函數,這個時候我們修改這個函數的prototype時,就發生了意外。如

function Person(name,age){this.name = name;this.age = age;}Person.prototype.getAge = function(){return this.age;}Person.prototype.getName = function(){return this.name;}var p = new Person("Nicholas",18);console.log(p.constructor); //Person(name, age)console.log(p.getAge()); //18console.log(p.getName()); //Nicholas 

但是如果是這樣:

function Person(name,age){this.name = name;this.age = age;}Person.prototype = {getName:function(){return this.name;},getAge:function(){return this.age;}}var p = new Person("Nicholas",18);console.log(p.constructor); //Object()console.log(p.getAge()); //18console.log(p.getName()); //Nicholas 

結果constructor變了。

原因就是prototype本身也是對象,上面的代碼等價于

Person.prototype = new Object({getName:function(){return this.name;},getAge:function(){return this.age;}}); 

因為constructor始終指向創建當前對象的構造函數,那么就不難理解上面代碼p.constructor輸出的是Object了。

對于修改了prototype之后的constructor還想讓它指向Person怎么辦呢?簡單,直接給Person.prototype.constructor賦值就可以了:

Person.prototype = {constructor:Person,getName:function(){return this.name;},getAge:function(){return this.age;}}

以上所述是小編給大家介紹的JavaScript中的constructor ,希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 行唐县| 金平| 集安市| 漯河市| 麻栗坡县| 常宁市| 洪江市| 华阴市| 监利县| 吴桥县| 茌平县| 崇左市| 华池县| 高碑店市| 荥阳市| 瓦房店市| 牡丹江市| 钟山县| 梓潼县| 十堰市| 滁州市| 翼城县| 平昌县| 公主岭市| 阿拉尔市| 金门县| 加查县| 承德市| 巢湖市| 永兴县| 泸西县| 芒康县| 上高县| 金寨县| 天祝| 元氏县| 依安县| 阆中市| 印江| 镇原县| 浦县|