我对Object.defineProperty很好奇。它看起来非常冗长,因为它没有做比在构造函数中已经可以做的事情更多的事情。这有什么意义?不使用它会是“坏代码”吗?我知道您对defineProperty的读写和可枚举性有更多的控制,这足以使用这种冗长的语法吗?
function Person(age, name) {
this.name = name;
this.age = age;
};
Object.defineProperty(Person.prototype, "age", {
get: function() {
return this._age;
},
// Added a few things to demonstrate additional logic on the setter
set: function(num) {
num = parseInt(num, 10);
if(num > 0) {
this._age = num;
}
}
});发布于 2013-12-06 17:25:08
根据托莫莫伊特的要求。我以answeR的形式发布我的评论:
您通常只在非常特殊的情况下使用defineProperty。(假设你想要年龄的验证?)--在你的情况下--我不会用它。
执行部分接着问道:
如果使用defineProperty可能有用的话,您可以随手想到验证之外的任何事情吗?
原因很多:
有很多很好的用例--因为IE8,它们在网络中并不是很常见。在你的情况下(年龄),我不会使用Object.defineProperty。
https://codereview.stackexchange.com/questions/36791
复制相似问题