首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript Object.defineProperty

JavaScript Object.defineProperty
EN

Code Review用户
提问于 2013-12-06 16:32:32
回答 1查看 638关注 0票数 0

我对Object.defineProperty很好奇。它看起来非常冗长,因为它没有做比在构造函数中已经可以做的事情更多的事情。这有什么意义?不使用它会是“坏代码”吗?我知道您对defineProperty的读写和可枚举性有更多的控制,这足以使用这种冗长的语法吗?

代码语言:javascript
复制
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;
    }
  }
});
EN

回答 1

Code Review用户

回答已采纳

发布于 2013-12-06 17:25:08

根据托莫莫伊特的要求。我以answeR的形式发布我的评论:

您通常只在非常特殊的情况下使用defineProperty。(假设你想要年龄的验证?)--在你的情况下--我不会用它。

执行部分接着问道:

如果使用defineProperty可能有用的话,您可以随手想到验证之外的任何事情吗?

原因很多:

  • 不可枚举的属性,
  • 冻结的财产,
  • 计算属性,
  • 代理(基于另一个对象创建一个对象,镜像调用+观察)。

有很多很好的用例--因为IE8,它们在网络中并不是很常见。在你的情况下(年龄),我不会使用Object.defineProperty

票数 4
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/36791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档