最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Generating generic getters and setter on javascript object - Stack Overflow

programmeradmin1浏览0评论

It is possible to create getters and setters in javascript as shown by

Object.defineProperty
__define***__

In all those instances, the name of the property is known.

Is it possible create a generic one.

By this I mean, I have a getter and or setter and it is called irrespective of the property name.

Is this possible? If so, how?

regards.

Note: I did find these after posting the question. Looks like it is currently not possible as the first answer stated.

Is it possible to implement dynamic getters/setters in JavaScript?

Monitor All JavaScript Object Properties (magic getters and setters)

It is possible to create getters and setters in javascript as shown by

Object.defineProperty
__define***__

In all those instances, the name of the property is known.

Is it possible create a generic one.

By this I mean, I have a getter and or setter and it is called irrespective of the property name.

Is this possible? If so, how?

regards.

Note: I did find these after posting the question. Looks like it is currently not possible as the first answer stated.

Is it possible to implement dynamic getters/setters in JavaScript?

Monitor All JavaScript Object Properties (magic getters and setters)

Share Improve this question edited May 23, 2017 at 11:45 CommunityBot 11 silver badge asked Jan 26, 2012 at 23:06 ritcoderritcoder 3,30410 gold badges45 silver badges63 bronze badges
Add a comment  | 

5 Answers 5

Reset to default 9

To all time travelers like me:

It was not possible at the time the question was asked, but it is already possible in present versions of EcmaScript via so-called proxy objects. See more here:

  • Is it possible to implement dynamic getters/setters in JavaScript?
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy

There is a non standard function __noSuchMethod__() which is executed when a non existing property is invoked as a function.

But I don't think there is exactly what you are looking for in JavaScript (yet).

Not possible in standard javascript at this point.

I suppose you are expected to handle this yourself:

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
}

I feel like you guys were looking for something like this

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];
}
}

Here the set and get methods are setter and getter. You can verify this with following code.

var testObj=new getterSetter();
testObj.set('valA',10);
alert(testObj.get('valA'));

Also, checking for the propName to set/get is not a function.

发布评论

评论列表(0)

  1. 暂无评论