我将如何为 js 中的对象制作一般情况下的访问器?

How would I make a general case accessor for an object in js?

我正在尝试为任何给定对象创建一个一般案例 getter/setter。例如:

var obj = {
   a: 1,
   b: "dog",
   c: false
}

Object.defineProperty(obj, 'general_case', {
   get: function(attr) { return "unknown attribute "+attr }
})

console.log(obj.a) // should print 1
console.log(obj.d) // should print "unknown attribute d"

我如何才能在 JavaScript 中完成此操作?

您可以使用 Proxy.

var obj = new Proxy({
   a: 1,
   b: "dog",
   c: false
}, {
  get(target, prop, receiver) {
    return prop in target ? target[prop] : "unknown attribute " + prop;
  }
});
console.log(obj.a);
console.log(obj.d);