我对 javascript 的 ecmascript 5 方法的实际使用有一个一般性问题。
例如
Object.defineProperties(obj, 值, 配置)
据我所知,javascript 是前端 Web 应用程序的驱动程序。定义变量常量的用法真的不多吗?我可以看到,如果您要对属性进行分类,枚举可能会派上用场。但为什么defineProperty 如此冗长?
对于 getter 和 setter...谁想在 ecmascript 5 中隐藏此功能,如果某些旧浏览器运行 ecma3,则 getter 功能甚至可能不会出现。为什么不直接使用简单的 getter 函数来实现相同的目的呢?而不是冒险行为?
最佳答案
首先,您的语法错误,您混合了 defineProperty
和 defineProperties
。正确的做法是:
Object.defineProperties(obj, props)
Object.defineProperty(obj, prop, descriptor)
There isn't really a lot of usage in defining variable constant?
嗯,@danronmoon disagrees .
I can see how enumerable might come in handy
是的,如果您想向 Object
等构造函数添加方法,但又不想使用 for...in
循环进行迭代,我认为非枚举属性是完美的选择他们。
But why is defineProperty so verbose
我不觉得它太冗长。如果您的意思是通常首选的方式是 writable: true,configurable:true, enumerable:true
但它们默认为 false
,我想那是因为这样您就可以创建使用点或括号表示法的属性
if some old browser runs ecma3, the getter function might not even occur
当然,但是遵循这个逻辑网络技术不会发展。
Why not just use a plain getter function to achieve the same
因为它更酷、更灵活、更强大……
例如,它们可以更轻松地为缺少的 native 属性制作垫片。在没有 setter/getter 的情况下,如何填充 classList
属性?
关于javascript - 在 javascript 中应用 DefineProperties 的用例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24337371/