2

我对 javascript 的 ecmascript 5 方法的实际用法有一个一般性的问题。

例如

Object.defineProperties(obj, value, config)

据我所知,javascript 是前端 Web 应用程序的驱动程序。定义变量常量真的没有很多用法吗?如果您要对属性进行分类,我可以看到 enumerable 可能会派上用场。但是为什么defineProperty 这么冗长呢?

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

4

1 回答 1

2

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

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

定义变量常量真的没有很多用法吗?

好吧,@danronmoon不同意

我可以看到 enumerable 可能会派上用场

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

但是为什么defineProperty这么冗长

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

如果某些旧浏览器运行 ecma3,getter 函数甚至可能不会出现

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

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

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

例如,它们可以更轻松地为缺少的本机属性制作垫片。classList如果没有 getter ,你将如何填充属性?

于 2014-06-21T02:16:50.727 回答