【发布时间】:2021-08-24 09:50:42
【问题描述】:
https://jsfiddle.net/ca4xvkzb/
function foo(a,b)
{
this.a = a
this.b = b
this.bar = a+b
}
var z = new foo();
z.a = 2
z.b = 3
console.log(z.bar)
目前发生了什么:
z.bar 返回 NaN,进一步测试表明,虽然 z.a 和 z.b 正在更新它们的值,但 z 中的 this.bar 使用 a 和 b 的旧未定义值,而不是更新后的值
我需要做什么:
z.bar 应该正确返回 a+b 的值:5,在对象定义之后设置它们之后,因为我想使用 foo 对象来获取更多变量,而不仅仅是 z
【问题讨论】:
-
z.bar应该是一个在需要时计算总和的函数,或者您应该在创建z时将正确的参数传递给构造函数。 -
this.bar = () => { return this.a + this.b }; console.log(z.bar()) -
this.bar 应该是这样的函数并从中返回总和
-
正如上面的 cmets 已经说过的,
bar应该是一个函数。再放大一点:现在发生的情况是,bar是一个设置为a和b之和的值,但仅适用于在调用它时传递给函数的任何内容(或在此new foo()的构造函数中的大小写。如果您说new foo(2,3),bar将具有正确的值,但它不是是动态的,该值将是固定的。如上图所示, 需要一个函数。下面是小提琴中的相同代码:jsfiddle.net/61to4eus(注意在 bar 之后的函数调用())
标签: javascript object oop