javascript - 在 JavaScript 中更新自定义对象属性

标签 javascript object properties updating custom-properties

由于某种原因,我厌倦了循环遍历对象文字来获取其长度。我想在Object.prototype上定义一个length属性,我可以设置初始长度,但我不知道当对象修改时如何更新它?

var obj = {a:1, b:2, c:3};
Object.defineProperty(Object.prototype, 'length', {value: 0});

//  obj.length === 0;

obj.d = 4;

//  obj === {a:1, b:2, c:3, d:4};
//  obj.length === 0;

任何字符串/数组对象都会自动执行此操作,如果您知道这是如何发生的,请启发我,如果不知道,那么也许您知道更新此自定义属性的方法?

最佳答案

如果您想要对象中键的数量长度,请使用Object.keys(obj).length

如果你很疯狂并希望在原型(prototype)上使用它......

Object.prototype.getKeyLength = function() {
    return Object.keys(this).length;
};

Any String/Array object does this automatically, if you know how this happens then please enlighten me...

这些是宿主对象/基元,它发生在幕后。

关于javascript - 在 JavaScript 中更新自定义对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31017057/

相关文章:

java - 如何在 Spring 中使用附加到当前应用程序上下文的环境来初始化属性占位符?

javascript - AWS Cloudfront 将 javascript 模块作为错误的 MIME 类型 ( "Text/Plain")

javascript - 像 $(.someClass) 这样的 JQuery 类选择器是否区分大小写?

javascript - 从另一个变量创建 JavaScript 变量名

javascript - 在 JavaScript 中,如何将一个对象数组与另一个对象数组合并?

javascript - 使用 .filter 和 .reduce 在 JavaScript 中过滤嵌套对象

javascript - boolean 运算符 ||

javascript - 将事件位置映射到chartjs折线图中的y轴值

iphone - 与 Objective-C 中的头文件和实现文件混淆

python - Django 动态模型属性