gpt4 book ai didi

JavaScript/ES6 属性在构造函数中设置值时不使用 setter

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

我有一个带有构造函数和几个属性的类。

const _id = new WeakMap();

class Product {
constructor(Id) {
_id.set(this, Id); // set
}
get Id(){
return _id.get(this);
}
set Id(value){
if(value <= 0) throw new Error("Invalid Id");
_id.set(this, value);
}
show() {
alert(`Id : ${_id.get(this)}`); // get
}
}


const p = new Product(-3);
// p.Id = -5; // set
window.alert(p.Id); // get (-3) problem ???

// p.show();

当我在创建对象时设置 Id 时注意到未使用 setter。

如何让构造函数中的 Id 集使用 setter?

最佳答案

您没有在构造函数中设置 Id,要设置它(使用 setter),请使用:

this.Id = Id;

这是一个例子:

const _id = new WeakMap();

class Product {
constructor(Id) {
this.Id = Id;
}
get Id(){
return _id.get(this);
}
set Id(value){
if(value <= 0) throw new Error("Invalid Id");
_id.set(this, value);
}
show() {
alert(`Id : ${_id.get(this)}`); // get
}
}


const p = new Product(-3);
// p.Id = -5; // set
window.alert(p.Id); // get (-3) problem ???

// p.show();

关于JavaScript/ES6 属性在构造函数中设置值时不使用 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58473001/

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