gpt4 book ai didi

javascript - 使用 JS 对象和函数

转载 作者:行者123 更新时间:2023-11-28 11:09:27 25 4
gpt4 key购买 nike

我是 javascript 的新手,我想知道为什么当我调用它时 bob.age 仍然是 30,而 age 是 50。我已经在 setAge 中将 age 设置为 50,并将 50 分配给 this.age,我知道它是对 bob.age 的引用,因此 agebob.age 应该具有相同的值。

enter image description here

// here we define our method using "this", before we even introduce bob
var setAge = function (newAge) {
this.age = newAge;
};
// now we make bob
var bob = new Object();
bob.age = 30;
// and down here we just use the method we already made

// change bob's age to 50 here
bob.setAge = setAge(50);

最佳答案

您的代码/理解中有几个错误,我将从为什么这是特别错误的开始,并解释围绕它的概念

var bob = new Object() 正在使 bob 成为常规对象。

您的setAge函数接受一个参数。它将 this.age 设置为该值。然而 setAge 被放置在全局范围内。因此 -> 窗口。这就是为什么当您在全局范围内输入 age 时,您会得到 50。

Jaromanda 是正确的,您需要将函数 setAge 放置到对象 bob 上。

如果您正在使用this,您可能会对伪经典实例化风格感兴趣:

var Person = function(name, age) {
this.name = name;
this.age = age;
}

Person.prototype.setAge = function(newAge) {
this.age = newAge;
}

var bob = new Person ('Bob', 30);
bob.setAge(50);
bob.age;
// 50

关于javascript - 使用 JS 对象和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31353406/

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