📅  最后修改于: 2020-10-25 09:14:04             🧑  作者: Mango
handler.defineProperty()方法可以定义新属性。它还可以直接在对象上修改现有属性。它是Object.defineProper()的陷阱。此方法可以在两种情况下使用。
defineProperty: function(target, property, descriptor)
目标:目标对象。
属性:检索的属性描述。
描述符:正在定义或修改的属性。
此方法返回一个布尔值
Chrome | 49 |
Edge | 12 |
Firefox | 18 |
Opera | 36 |
var target = {}
target.foo = 'bar'
document.writeln(Object.getOwnPropertyDescriptor(target, 'foo'))
输出:
[object Object]
var xyz = {};
var proxy = new Proxy(xyz, {
defineProperty: function(target, name, propertyDescriptor) {
document.writeln('in defineProperty');
return Object.defineProperty(target, name, propertyDescriptor);
}
});
Object.defineProperty(proxy, 'bar', {} );
输出:
in defineProperty
var xyz ={};
var hu = {};
var proxy = new Proxy(xyz, {
defineProperty: function(target, name, propertyDescriptor) {
document.writeln('Learn Java Script');
return Object.defineProperty(target, name, propertyDescriptor);
}
});
var pro= new Proxy(hu, {
defineProperty: function(target, name, propertyDescriptor) {
document.writeln('Proxt Method ');
return Object.defineProperty(target, name, propertyDescriptor);
}
});
Object.defineProperty(proxy, 'bar', {} );
Object.defineProperty(pro, 'hug', {} );
输出:
Learn Java Script Proxt Method