簡體   English   中英

為什么構造函數不能訪問他原型的屬性,但可以訪問父原型的屬性(原型的原型)

[英]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"

確實有效,因為AFunction對象的一個​​實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM