可以在javascript中创建getter和setter,如
所示Object.defineProperty
__define***__
在所有这些情况下,属性的名称是已知的。
是否可以创建通用的。
我的意思是,我有一个getter和/或setter,无论属性名称如何都会被调用。
这可能吗? 如果是这样,怎么样?
问候。
注意: 在发布问题之后我确实找到了这些。看起来目前无法作为第一个答案说明。
Is it possible to implement dynamic getters/setters in JavaScript?
Monitor All JavaScript Object Properties (magic getters and setters)
答案 0 :(得分:7)
有一个非标准函数__noSuchMethod__()
,它在作为函数调用非现有属性时执行。
但我认为在JavaScript中还没有找到你想要的东西。
答案 1 :(得分:3)
像我一样的旅行者:
当问题被问到时,这是不可能的,但在现有版本的EcmaScript中已经可以通过所谓的代理对象实现。点击此处了解更多信息:
答案 2 :(得分:1)
此时在标准javascript中无法使用。
答案 3 :(得分:0)
我想你应该自己处理这个问题:
if (!object.hasOwnProperty('foo')) {
// object has a foo property, its value might be undefined
} else if (typeof object.foo != 'undefined') {
// there is a foo property elsewhere on object's prototye chain with
// a value other than undefined
} else {
// the foo property might exist on the prototype chain with
// a value of undefined, or might not exist on the chain at all
}
答案 4 :(得分:0)
我觉得你们都在寻找像这样的东西
function getterSetter()
{
var valA;
this.set=function (propName,val)
{
if(typeof this[propName] =='function' )
{
return false;
}
this[propName]=val;
}
this.get=function (propName,val)
{
if(typeof this[propName] =='function' )
{
return false;
}
return this[propName];
}
}
这里的set和get方法是setter和getter。您可以使用以下代码进行验证。
var testObj=new getterSetter();
testObj.set('valA',10);
alert(testObj.get('valA'));
另外,检查要设置/获取的propName不是函数。