是否有更快(更少的代码行)方式来定义具有相同功能但名称不同的这两个属性?
Object.defineProperties(this, {
"position": {
get: function() {
return "get";
},
set: function() {
return "set";
}
},
"pos": {
get: function() {
return "get";
},
set: function() {
return "set";
}
}
});
答案 0 :(得分:2)
有几种方法,取决于你的意思更快。
这是一个带有一些例子的jsFiddle:https://jsfiddle.net/4o39yxmk/1/
var obj = {};
var props = {
get: function() {
return "get";
},
set: function(value) {
console.log(value);
return "set";
}
};
Object.defineProperties(obj, {
"position": props,
"pos": props
});
Object.defineProperty(obj, 'anotherPos', Object.getOwnPropertyDescriptor(obj, 'position'));
// trigger the setter
obj.position = 'myValuePosition';
obj.pos = 'myValuePos';
obj.anotherPos = 'myValueAnotherPos';
// trigger the getter
console.log(obj.position);
console.log(obj.pos);
console.log(obj.anotherPos);
答案 1 :(得分:1)
您可以定义第一个属性,然后将其复制到另一个名称,如下所示:
Object.defineProperty(this, {
"position": {
get: function() {
return "get";
},
set: function() {
return "set";
}
}
});
Object.defineProperty(this, 'pos', Object.getOwnPropertyDescriptor(this, 'position'));