gpt4 book ai didi

javascript - 你什么时候使用 Object.defineProperty()

转载 作者:IT王子 更新时间:2023-10-29 02:56:22 27 4
gpt4 key购买 nike

我想知道什么时候应该使用

Object.defineProperty

为一个对象创建新的属性。我知道我可以设置类似

enumerable: false

但是你什么时候真正需要这个?如果你只是设置一个属性,比如

myObject.myprop = 5;

它的描述符都设置为真,对吧?当你们使用相当冗长的 .defineProperty() 调用时,我实际上更好奇,原因是什么。

最佳答案

Object.defineProperty主要用于设置具有特定属性描述符的属性(例如只读(常量)、可枚举性(不在 for (.. in ..) 循环、getter、setter 中显示属性)。

"use strict";
var myObj = {}; // Create object
// Set property (+descriptor)
Object.defineProperty(myObj, 'myprop', {
value: 5,
writable: false
});
console.log(myObj.myprop);// 5
myObj.myprop = 1; // In strict mode: TypeError: myObj.myprop is read-only

例子

此方法使用属性扩展 Object 原型(prototype)。仅定义了 getter,并将可枚举性设置为 false

Object.defineProperty(Object.prototype, '__CLASS__', {
get: function() {
return Object.prototype.toString.call(this);
},
enumerable: false // = Default
});
Object.keys({}); // []
console.log([].__CLASS__); // "[object Array]"

关于javascript - 你什么时候使用 Object.defineProperty(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10105824/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com