我对javascript的ecmascript 5方法的实际用法有一般性质疑。
e.g。
Object.defineProperties(obj, value, config)
据我所知,javascript是前端Web应用程序的驱动程序。定义变量常量并没有多少用处?我可以看到,如果要对属性进行分类,可枚举的方法会派上用场。但是为什么defineProperty如此冗长?
对于getter和setter ...谁想要在ecmascript 5中隐藏这个功能,如果一些旧浏览器运行ecma3,getter函数可能甚至不会发生。为什么不使用普通的getter函数来实现相同的功能呢?而不是冒着冒险的行为?
答案 0 :(得分:2)
首先,您的语法错误,您正在混合defineProperty
和defineProperties
。正确的方法是:
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
财产?