定義
constructor
屬性返回對創(chuàng)建此對象的函數(shù)引用
語法
Date.constructor
//object.constructor
技術(shù)細(xì)節(jié)
返回值 | JavaScript 版本 |
---|---|
函數(shù)對象。Date對象的函數(shù)原型。 | 1.1 |
javascript默認(rèn)給函數(shù)一個屬性—prototype
累魔。對煞茫,每個函數(shù)都有一個屬性叫做prototype
。這個prototype
的屬性值是一個對象(屬性的集合)珠叔,默認(rèn)的只有一個叫做constructor的屬性棺亭,指向這個函數(shù)本身。原型既然作為對象蟋软,屬性的集合镶摘。不可能就只弄個constructor
來玩玩!
我們現(xiàn)在以Person
為栗子:
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("jack",28);
console.log(p.constructor); //Person(name, age)
console.log(p.getName()); //jack
console.log(p.getAge()); //28
我們改寫一下代碼岳守。
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("jack",28);
console.log(p.constructor); //Object()
console.log(p.getAge()); //28
console.log(p.getName()); //jack
現(xiàn)在constructor
怎么指向Object
了凄敢??湿痢?涝缝?
因為prototype
也為對象啊
其實上面代碼等價于:
Person.prototype = new Object({
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
});
因為constructor
始終指向創(chuàng)建當(dāng)前對象的構(gòu)造函數(shù)的引用,so上面代碼p.constructor
輸出的是Object
了譬重。
現(xiàn)在想要讓p.constructor
輸出是Person
拒逮?
好吧,現(xiàn)在為Person.prototype.constructor
賦值Person
臀规。
Person.prototype = {
constructor:Person,
getName:function(){
return this.name;
},
getAge:function(){
return this.age;
}
}
ps:推薦《javascript高級程序設(shè)計3》滩援。
完