![](/img/trans.png)
[英]Javascript - Set properties in the constructor or constructor's prototype property?
[英]Javascript - Constructor's properties & Prototype
我試圖了解有關構造函數的一件事。 也就是說,我不明白如何使用Foo.prototype.property訪問函數對象的屬性,也就是構造函數的屬性,例如:
//let's create new function object with predefined properties
function Foo() {
this.name = "Mike";
this.returnName = function() {
return 'This persons name is ' + this.name + '.';
};
};
//now let's create new object using constructor and prototypal inheritance
var mike = new Foo();
mike.returnName(); //returns "This persons name is Mike."
我知道邁克繼承了Foo原型的屬性。 因此,這些屬性必須存在於原型內部。 新對象使用__ proto __指向帶有內部原型鏈接的原型。 我明白了。 我無法解決的問題是如何工作的:
Foo.prototype.returnName();
構造函數具有帶有原型屬性的.prototype鏈接,反之亦然,原型具有帶有Foo的.constructor鏈接。
我知道調用Foo(); 函數首先調用window.returnName(); 將返回該句子,因為此上下文設置為window。
這是因為當我使用原型調用該方法時,會將其分配給窗口嗎? 有什么辦法可以訪問/調用此構造方法的屬性?
您沒有在Foo的原型上指定returnName。 如果您要這樣做:
function Foo(){
this.name = "Mike";
}
Foo.prototype.returnName = function(){
return 'This persons name is ' + this.name + '.';
};
var mike = new Foo();
mike.returnName();
情況會有所不同。
函數returnName
未分配給Foo
的原型。 而是將其分配給Foo
每個實例,就像name
為"Mike"
。
每當您調用new Foo()
都會創建一個新的上下文,這就是該實例的this
上下文。
如果直接(不帶new
)調用Foo()
this
是全局對象( window
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.