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

在JavaScript中更新自定义对象属性,javascript,object,properties,updating,custom-properties,Javascript,Object,Properties,Updating,Custom Properties,出于这样或那样的原因,我已经厌倦了通过循环对象文本来获取其长度。我想在对象上定义length属性。prototype,我可以设置初始长度,但我不知道在修改对象时如何更新它 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}; //

出于这样或那样的原因,我已经厌倦了通过循环对象文本来获取其长度。我想在
对象上定义
length
属性。prototype
,我可以设置初始长度,但我不知道在修改对象时如何更新它

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

如果你疯了,想把它放在原型机上

Object.prototype.getKeyLength = function() {
    return Object.keys(this).length;
};
任何字符串/数组对象都会自动执行此操作,如果您知道这是如何发生的,请告诉我


这些是主体对象/基本体,发生在封套后面。

如果需要对象中键数的长度,请使用
object.keys(obj).length

如果你疯了,想把它放在原型机上

Object.prototype.getKeyLength = function() {
    return Object.keys(this).length;
};
任何字符串/数组对象都会自动执行此操作,如果您知道这是如何发生的,请告诉我

这些是主体对象/原语,发生在封面后面。

您可以尝试以下方法:

Object.defineProperty(Object.prototype, 'keylength', {
  get: function getKeyLength() {
    return Object.keys(this).length;
  }
});
您可以尝试以下方法:

Object.defineProperty(Object.prototype, 'keylength', {
  get: function getKeyLength() {
    return Object.keys(this).length;
  }
});

你的初始猜测很接近,从

您可以使用get而不是value来定义getter,在访问定义的属性时调用它

演示

Object.defineProperty(Object.prototype,'len'{
可写:false,
get:function(){
返回Object.keys(this.length);
}
});
变量a={
‘t’:‘This’,
's':'A tsets'
};
控制台日志(a.len);
a['2222']=3;

控制台日志(a.len)您的初始猜测非常接近,从

您可以使用get而不是value来定义getter,在访问定义的属性时调用它

演示

Object.defineProperty(Object.prototype,'len'{
可写:false,
get:function(){
返回Object.keys(this.length);
}
});
变量a={
‘t’:‘This’,
's':'A tsets'
};
控制台日志(a.len);
a['2222']=3;

控制台日志(a.len)?Ok dude为
keys
方法的改进欢呼,但是
getKeyLength
是一个函数,因此需要调用它来更新属性。。。这意味着我必须
ovserve
对象以进行更改,然后调用函数ok dude为
keys
方法的改进干杯,但是
getKeyLength
是一个函数,因此需要调用它来更新属性。。。这意味着我必须
ovserve
对象以进行更改,然后调用函数cheers dude,但整个想法是在调试时查看chrome控制台,并查看50个属性值,而不必单击50
(…)
启动器。似乎您只需要它进行调试,如果您想更轻松地进行调试,你可以向Chrome的创建者发送一个请求。你能详细说明一下吗,也许需要一些代码?这是ECMAScript 5和ECMAScript 6中唯一的方法,Chrome向你显示
(…)
,而不是属性的数量,因为它想更快地显示对象(通过避免执行属性getter/setter)。如果有一个名为
onsetproperty
的功能,那么一切都会变得更容易,但是很抱歉,当前的ECMAScript标准不支持。是的,我希望如此!启动
对象。一旦创建了
,以及许多其他对象生命周期事件…伙计们欢呼,但整个想法是在调试时查看chrome控制台,并查看50个属性值,而不必单击50
(…)
启动器。您似乎只需要它进行调试,如果您想更轻松地进行调试,你可以向Chrome的创建者发送一个请求。你能详细说明一下吗,也许需要一些代码?这是ECMAScript 5和ECMAScript 6中唯一的方法,Chrome向你显示
(…)
,而不是属性的数量,因为它想更快地显示对象(通过避免执行属性getter/setter)。如果有一个名为
onsetproperty
的功能,那么一切都会变得更容易,但是很抱歉,当前的ECMAScript标准不支持。是的,我希望如此!启用
对象。一旦创建
,以及许多其他对象生命周期事件。。。