我已經瞭解到,在函數的原型中,指向函數本身的指針包含在名爲constructor
的字段中。爲什麼`obj instanceof ConstructorFunc`仍然返回true,即使原型被覆蓋?
function Person(){
}
alert(Person.prototype.constructor); // function Person(){}
如果我覆蓋函數的原型對象文本,構造場自然喪失:
function Person(){
}
Person.prototype = {
name:"Sahand",
age:24
}
alert(Person.prototype.constructor); // function Object(){[native code]}
但是,當原型已經以這種方式被覆蓋,我們仍然可以檢查是否有對象由Person
構造函數創建:
var person = new Person()
alert(person instanceof Person); // true
這怎麼可能? instanceof
如何發現person
是由Person()
創建的,原型的constructor
字段不再包含Person
了?
對不起喬納斯,糾正。仍在學習...... – Sahand
不用擔心;)錯別字發生... –