gpt4 book ai didi

JavaScript - 构造函数调用如何知道如何将 "self"变量添加到返回的对象?

转载 作者:行者123 更新时间:2023-11-30 10:35:07 25 4
gpt4 key购买 nike

在 JavaScript 中使用构造函数调用时,我读到函数中的 this 变量/关键字将绑定(bind)到新对象,并将返回一个具有所有绑定(bind)“this”值的对象。

例如:

function Person() {
this.name = "bob";
this.age = 33;
}

var person = new Person(); // person object with name property of "bob" and age property of 33

如果我这样做,会出现同样的结果:

function Person() {
var localVar = "test",
fake = "fake";
this.name = "bob";
this.age = 33;
}

var person = new Person(); // person object with name property of "bob" and age property of 33 regardless of the local variables declared inside

但是,如果我这样做,声明在 self 上的变量/属性将在对象中返回

function Person() {
var self = this;
self.phone = "123-123-1222";
self.career = "programmer";
this.name = "bob";
this.age = 33;
}

var person = new Person(); // person object with name property of "bob" and age property of 33, phone of "123-123-1222" and career of "programmer"

在最后一个示例中,解释器如何知道返回所有四个属性,即使其中两个属性绑定(bind)到 this 的局部变量而不是实际的“this”关键字。

最佳答案

在您的最后一个示例中,self 只是对this 的引用。它们可以互换,因为它们指向同一个对象:

function foo() {
var self = this;
var that = self;

console.log(self === this); // true
console.log(that === this); // true
}

关于JavaScript - 构造函数调用如何知道如何将 "self"变量添加到返回的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14452764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com