Sky*_*ler 6 javascript module-pattern
我已经看到了在模块模式中实现 getter/setter 的两种不同方法。一个使用“defineProperty”,而另一个则不使用。一种与另一种相比有哪些优点/缺点?
var MyModule = (function() {
var _val;
var api = {
get value1() {
return _val
},
set value1(value) {
_val = value
}
};
Object.defineProperty(api, 'value2', {
get: function() {
return _val;
},
set: function(value) {
_val = value
}
});
return api;
}());
Run Code Online (Sandbox Code Playgroud)
使用getter 语法创建一个属性,在 ES2015 之前,您必须在编写代码时知道该属性的名称。
Object.defineProperty允许您执行与上面相同的操作,但即使在 ES2015 之前,也不要求您提前知道属性的名称。它还允许您决定属性是否可配置、可枚举或可写,而使用get/set语法是不可能的。
回答你的确切问题:两者都不是更好。它们适用于不同的情况。该get/set语法更易于阅读和编写,但不如Object.defineProperty.
| 归档时间: |
|
| 查看次数: |
1724 次 |
| 最近记录: |