什么是正确的原型声明,以便捕获所有对变量的请求?myObject 是具有更改原型的对象。
这与 JavaScript 的原型继承并没有真正的关系。可以通过new
在构造函数上使用关键字及其prototype
属性来创建具有原型的对象,或者通过Object.create
. 您感兴趣的是如何构造一个对象,每个属性都可以访问......</p>
会被函数捕获
不幸的是,当前的 JavaScript 无法做到这一点。您只能设置具有特定名称的属性(使用值,或使用 getter/setter),目前还没有实现包罗万象的行为 - 尽管一些引擎支持该Proxy
草案。为此,请参阅属性是否具有等效的 __noSuchMethod__ 功能,或者在 JS 中实现它的方法?,带有默认值的Javascript数组(相当于Python的defaultdict)?或在读取之前设置未定义的 javascript 属性。
我认为这最接近您想要的 - 使用显式 getter 函数而不是属性:
function Entity() {
this.data = {position_X:5, foo:"bar", …};
}
Entity.prototype.get = function (name) {
console.log("access on "+name);
return this.data[name];
};
var entity = new Entity;
entity.get("x"); // undefined, but logs "access on x"
entity.get("position_X"); // 5, and logs "access on position_X"
entity.get("foo"); // "bar", and logs "access on foo"