由于某种原因,我厌倦了循环遍历对象文字来获取其长度。我想在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/