gpt4 book ai didi

JavaScript 对象和 getter 属性

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

无法弄清楚这一点。为什么我会得到 volume1volume2 属性的 NaNnull

undefined = ''[0];

function Set(defaults) {
$.extend(this, {
repCount: undefined,
weight: undefined,
get volume1() {
return this.repCount * this.weight;
}
});

if (defaults) {
$.extend(this, defaults);
}
}

$.extend(Set.prototype, {
get volume2() {
return this.repCount * this.weight;
}
});

var firstSet = new Set({
weight: 135,
repCount: 8
});

document.write(JSON.stringify(firstSet));
document.write("<br />");
document.write(firstSet.volume2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

最佳答案

进行了一些调试,我发现您的 getter 方法正在使用“未定义”的实例来将构造函数中的两个实例相乘。所以 undefined * undefined 将返回 NaN。我更改了脚本构造 Set 对象的方式以使其正常工作,它现在返回一个数字作为构造函数中设置的对象的属性,并且没有默认的未定义。

您可以看到它正在执行我所描述的操作,方法是将 document.write 设置为获取volume1,更改 getter 以返回 this.repCount,并将repCount 设置为 0 或未定义,就像我在这里所做的那样:

undefined = ''[0];

function Set(defaults) {
$.extend(this, {
repCount: 0,
weight: 0,
get volume1() {
return this.repCount;
}
});

if (defaults) {
$.extend(this, defaults);
}
}

$.extend(Set.prototype, {
get volume2() {
return this.repCount;
}
});

var firstSet = new Set({
weight: 135,
repCount: 8
});

document.write(JSON.stringify(firstSet));
document.write("<br />");
document.write(firstSet.volume2);

这是工作代码:

        undefined = ''[0];

function Set(weight, repCount) {
this.weight = weight;
this.repCount = repCount;


$.extend(this, { //it using the current instance as the return
get volume1() {
return repCount * weight;
}
});


}

$.extend(Set.prototype, {
get volume2() {
return this.weight;
}
});

var firstSet = new Set(135, 8);

document.write(JSON.stringify(firstSet));
document.write("<br />");
document.write(firstSet.volume1);

关于JavaScript 对象和 getter 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35876686/

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