handler.defineProperty()
JavaScript handler.defineProperty()方法
handler.defineProperty()方法可以定义新属性。它还可以直接在对象上修改现有属性。它是Object.defineProper()的陷阱。此方法可以在两种情况下使用。
当我们要确保跨浏览器对getter和setter的支持时。
每当我们要定义自定义属性访问器时。
语法
defineProperty: function(target, property, descriptor)
参数
target:目标对象。
property:检索到的属性描述。
descriptor:正在定义或修改的属性。
返回值
此方法返回布尔值
浏览器支持
Chrome |
49 |
Edge |
12 |
Firefox |
18 |
Opera |
36 |
示例1
var target = {}
target.foo = 'bar'
document.writeln(Object.getOwnPropertyDescriptor(target, 'foo'))
输出:
示例2
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', {} );
输出:
示例3
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