[英]Why constructor function can't access property of his prototype, but can access property of parent prototype (prototype of prototype)
以下代碼,我使用chrome瀏覽器控制台檢查:
function A(){
this.a='a'
}
這是一個構造函數function.i已將屬性b
綁定到A
的原型。
A.prototype.b='b';
但是當我使用構造函數A
訪問b
屬性時。 它顯示undefined
。
A.b //it return undefined
我再次將屬性m
分配給Function.prototype
,並使用A
進行訪問返回coorect vaue。
Function.prototype.m='m';
A.m //it return "m"
那么為什么構造函數不能訪問他的原型屬性,而是可以訪問父原型(他的原型的protype)屬性 。
您無法訪問A.prototype.b
因為您尚未實例化A
原型是在對象實例化期間創建的對象 。 在您的示例中,這可能是這樣的:
// Create your constructor and prototype object
function A() {}
A.prototype = {
b: "b"
};
var a = new A();
console.log(a.b);
>>> "b"
但是,在Am
的情況下, A
(注意,大寫字母A,您的構造函數) 是 Function
一個實例,因此繼承了它的所有屬性,包括您添加的屬性。
有關更多信息,我建議您查看有關面向對象JavaScript簡介的MDN文章
您不能將其作為Ab
訪問,因為A
不是A
構造函數的實例。 你需要:
var instanceA = new A();
instanceA.b; // will work
而
Function.prototype.m='m';
A.m //it return "m"
確實有效,因為A
是Function
對象的一個實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.