構造函數exClass
不是指同一個對象作爲實例exClass
,這裏面有什麼newMethod
this
引用的prototype
屬性的prototype
財產。證明:
function exClass() {}
exClass.prototype.newMethod = function() {
console.log(this.prototype === exClass.prototype); // false
console.log(this.prototype); // undefined
}
var obj = new exClass();
obj.newMethod();
輸出:
false
undefined
更一般地,在JavaScript中每個對象都有一個原型對象。函數的prototype
屬性指定原型對象將用於使用該函數創建的對象的類別。
沒有什麼能阻止你從另一個函數中的一個函數的prototype
修改:
exClass.prototype.newMethod = function() {
exClass.prototype.anotherMethod = function() {}
}
或者更一般地:
exClass.prototype.newMethod = function() {
this.constructor.anotherMethod = function() {}
}
但我不會推薦它。