繁体   English   中英

Javascript-构造函数的属性和原型

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM