javascript - 在 javascript 中应用 DefineProperties 的用例是什么?

标签 javascript ecmascript-5 defineproperty

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

例如

Object.defineProperties(obj, 值, 配置)

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

对于 getter 和 setter...谁想在 ecmascript 5 中隐藏此功能,如果某些旧浏览器运行 ecma3,则 getter 功能甚至可能不会出现。为什么不直接使用简单的 getter 函数来实现相同的目的呢?而不是冒险行为?

最佳答案

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

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/

相关文章:

javascript - 一段时间后如何更改组件的类?

javascript - 你能用 Angular 压缩 get 请求的内容吗?

javascript - 当其他按钮被禁用时隐藏按钮事件

javascript - NodeJS 的 TypeScript ECMAScript 目标

javascript - 为什么抛出异常后就不再认为发生了?

javascript - 无法使用 XMLHttpRequest 绘制音频文件的波形

javascript - 排序数组和 indexOf() 运行时

使用 defineProperty 的 JavaScript 原型(prototype)继承

javascript - 如果我也可以做得更简单,那么 Object.defineProperty 有什么用?

javascript - {configurable :false} or Object. seal() 工作不正常