在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标准不支持。是的,我希望如此!启用对象。一旦创建
,以及许多其他对象生命周期事件。。。