在javascript中应用defineProperties的用例是什么?

时间:2014-06-21 01:14:37

标签: javascript ecmascript-5 defineproperty

我对javascript的ecmascript 5方法的实际用法有一般性质疑。

e.g。

Object.defineProperties(obj, value, config)

据我所知,javascript是前端Web应用程序的驱动程序。定义变量常量并没有多少用处?我可以看到,如果要对属性进行分类,可枚举的方法会派上用场。但是为什么defineProperty如此冗长?

对于getter和setter ...谁想要在ecmascript 5中隐藏这个功能,如果一些旧浏览器运行ecma3,getter函数可能甚至不会发生。为什么不使用普通的getter函数来实现相同的功能呢?而不是冒着冒险的行为?

1 个答案:

答案 0 :(得分:2)

首先,您的语法错误,您正在混合definePropertydefineProperties。正确的方法是:

Object.defineProperties(obj, props)
Object.defineProperty(obj, prop, descriptor)
  

定义变量常量并没有太多用法?

好吧,@ danronmoon disagrees

  

我可以看到有多可能派上用场

是的,我认为如果你想向Object之类的构造函数添加方法,但是不希望for...in lops迭代它们,那么非枚举属性是完美的。

  

但为什么defineProperty如此冗长

我觉得它太冗长了。如果您的意思是通常首选的方式是writable: true, configurable:true, enumerable:true,但它们默认为false,我想这是因为您可以使用点或括号表示法创建属性

  

如果某个旧浏览器运行ecma3,则可能甚至不会发生getter函数

当然,但遵循这种逻辑网络技术不会发展。

  

为什么不使用普通的getter函数来实现相同的

因为它更酷,更灵活,更强大......

例如,它们可以更容易地为缺少的本机属性制作填充程序。如果没有吸气剂,您将如何填充classList财产?