Javascript 如何将Getter/Setter应用于对象
在定义对象时,如何将getter/setter应用于对象本身 例如,我想Javascript 如何将Getter/Setter应用于对象,javascript,node.js,constructor,getter-setter,Javascript,Node.js,Constructor,Getter Setter,在定义对象时,如何将getter/setter应用于对象本身 例如,我想 myobj=123runconsole.log(123) 我知道可以使用类扩展,但我想找到一种更简单的方法来定义getter/setter,可能是在构造函数中 有人知道怎么做吗?这可能吗 如果你需要更多的信息,或者我不够清楚,请告诉我-JacobTDCgetter和setter与对象的属性相关,而不是像您的问题中那样与变量赋值相关 类扩展在这里并不真正相关 请勾选此项,例如: var语言={ 设置当前(名称){ this
myobj=123
runconsole.log(123)
我知道可以使用类扩展
,但我想找到一种更简单的方法来定义getter/setter,可能是在构造函数中
有人知道怎么做吗?这可能吗
如果你需要更多的信息,或者我不够清楚,请告诉我
-JacobTDC
getter
和setter
与对象的属性相关,而不是像您的问题中那样与变量赋值相关
类扩展
在这里并不真正相关
请勾选此项,例如:
var语言={
设置当前(名称){
this.log.push(名称);
},
日志:[]
}
language.current='EN';
console.log(language.log);//[EN']
language.current='FA';
console.log(language.log);//['EN','FA']
这实际上在MDN中得到了很好的描述-本文提供了一个简单的示例,说明JavaScript中getter和setter的用法
此示例的修改(适合您的问题)版本如下所示:
var o = {
set myvar(value) {
console.log(value);
this.myvar = value;
}
};
o.myvar = 123;
// Should call console.log(123)
还有另一种方法——您可以使用ES2015代理及其陷阱。在出于某种原因不想修改原始对象的情况下,这可能很有用 这两个代理是每个对象的“全局”代理(如-它们捕获对代理对象的所有属性执行的get/set)。下面是一个基于链接文章的简单示例:
var o = new Proxy({}, {
set: function(target, prop, value, receiver) {
target[prop] = value;
// "set" proxy is global, so it will catch calling assignment operator on ALL properties of this object
if (prop === "myvar") {
console.log(value)
}
return true
}
});
o.myvar = 123;
// Should call console.log(123)
可以使用
Object.defineProperty()
为属性定义setter:
var a = {}
Object.defineProperty(a, 'myobj', {
set: function (value) {
console.log(value)
}
})
a.myobj = 111
在
myobj=123
@MinusFour中没有对象,这只是一个例子。是的,我意识到这是可能的,我只是不想这样做。我担心变量赋值不是javascript中可以“获取”的东西(我甚至不确定哪种语言支持这一点)。感谢您的澄清。您能告诉我所描述的页面中的位置吗,因为我在过去30分钟里一直在查看该页面,并且它的外观都开始相同。我提供的第一个链接直接指向所述示例(在b
属性上定义了getter的链接).我用两个例子编辑了我的答案,也许这会有所帮助。谢谢,@mdziekon!