我刚刚了解了JavaScript中的getter / setter方法。
如果要删除设置器,只需
delete
即可:
delete o.current;
此代码删除了二传手...
var object = {
something: "",
get property() {
return this.something
},
set property(value) {
this.something = value
}
}
object.property+="1"
object.property+="2"
object.property+="3"
object.property+="4"
console.log(object.property) //"1234"
delete object.property
console.log(object.property) //undefined
...但是吸气剂(同名)也是如此。
我需要使用相同的名称来使用+=
运算符。
问题是:
JS中是否有一种方法可以删除设置器,但要保留设置器?
谢谢!
答案 0 :(得分:0)
var object = {
something: "",
get x() {
return this.something
},
set y(value) {
console.log(value);
this.something = value
}
}
console.log(object.x)
object.y = object.x + "1"
delete object.y
object.y = object.x + "2"
console.log(object.x) //"1234"
delete object.x
console.log(object.x) //undefined
您必须更改setter和getter的名称。
object.y += "1"
这没有意义,因为您调用了相同的功能,它将变成:
object.y = object.y + "1";
错了。
object.y (set) = object.x (get) + "1";
现在更好。不?
答案 1 :(得分:0)
为此目的使用Object.defineProperty
:
Object.defineProperty(object,"property",{set:undefined})
这将仅删除二传手。
var object = {
something: "",
get property() {
return this.something
},
set property(value) {
this.something = value
}
}
object.property+="1"
object.property+="2"
object.property+="3"
object.property+="4"
console.log(object.property) //"1234"
Object.defineProperty(object,"property",{set:undefined})
console.log(object.property) //"1234"