我刚刚读过JavaScript中的getter / setter。
正如documentation on MDN写道:
如果你想删除setter,你可以只是
delete
它:delete o.current;
此代码删除了setter ...
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中是否有一种删除setter的方法,但保留getter?
谢谢!
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";
现在好点了。没有?
使用Object.defineProperty
用于此目的:
Object.defineProperty(object,"property",{set:undefined})
这将仅删除setter。
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"