我将如何为 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);
我正在尝试为任何给定对象创建一个一般案例 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);