在javascript中设置动态属性

Erv*_*dac 8 javascript

我想知道是否可以在Javascript中为动态属性设置一个setter?

所以这:

var myobj = new MyObj();

myobj.a_custom_prop = 'something';
Run Code Online (Sandbox Code Playgroud)

会调用一个能够检索'a_custom_prop'和'something'的函数

要清楚,我想要一个类似于以下的功能:

MyObj.property.define = function (prop, value) { };
Run Code Online (Sandbox Code Playgroud)

被称为这样:

myobj.prop = value;
Run Code Online (Sandbox Code Playgroud)

代替:

myobj.define('prop', value);
Run Code Online (Sandbox Code Playgroud)

知道属性的名称相对于静态不是静态的myobj,否则我会使用:

Object.defineProperty(MyObj.prototype, 'a_custom_prop', {
   set: function (value) { /*...*/ }
});
Run Code Online (Sandbox Code Playgroud)

dam*_*uar 4

您想要的类似于method missing在 Ruby 中,您定义一个函数来处理对未定义方法的调用。

正如您可以在此处阅读:Javascript 是否具有类似于 Ruby 的 method_missing 功能? JavaScript 还没有类似的东西,但是有一个针对 ES6 的提案: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy