JavaScript—在对象';类别';
我试图使用纯JavaScript遍历对象实例中的所有对象 我试过这样的方法:JavaScript—在对象';类别';,javascript,loops,object,Javascript,Loops,Object,我试图使用纯JavaScript遍历对象实例中的所有对象 我试过这样的方法: function a(){ this.iterate = function(){ for (var obj in this){ console.log(obj); } } } var A = new a(); A.insertedValue = 20; A.iterate(); 执行此操作时,它只记录变量的名称,例如“insertedValue
function a(){
this.iterate = function(){
for (var obj in this){
console.log(obj);
}
}
}
var A = new a();
A.insertedValue = 20;
A.iterate();
执行此操作时,它只记录变量的名称,例如“insertedValue”,而不是记录insertedValue的“20”
是否有更好的方法循环遍历对象实例中的所有对象,或者有更好的方法从循环遍历的对象获取值
有没有更好的方法来循环一个系统中的所有对象
一个对象的实例,或者一种从我正在处理的对象中获取值的方法
循环槽
因为您只是在this
内部打印键,而不是使用this[obj]
打印其值
成功
function a(){
this.iterate = function(){
for (var obj in this){
console.log(this[obj]); //observe that this line has changed
}
}
}
有没有更好的方法来循环一个系统中的所有对象
一个对象的实例,或者一种从我正在处理的对象中获取值的方法
循环槽
因为您只是在this
内部打印键,而不是使用this[obj]
打印其值
成功
function a(){
this.iterate = function(){
for (var obj in this){
console.log(this[obj]); //observe that this line has changed
}
}
}
您这样做在很大程度上是正确的,只是
for in
循环对象属性的名称,而不是它们的值。因此,要输出属性的值,请使用this[name]
:
function a(){
this.iterate = function(){
for (var name in this){
console.log(name + "=" + this[name]);
}
};
}
请注意,中的将循环遍历对象的可枚举属性,包括它从原型继承的属性。如果您只想要自己的属性,而不是继承的属性,则可以通过hasOwnProperty
检查该属性是否为“自己的”属性:
function a(){
this.iterate = function(){
for (var name in this){
if (this.hasOwnProperty(name)) {
console.log(name + "=" + this[name]);
}
}
};
}
或者使用方便的Object.keys
,它为您提供了自己的可枚举属性数组:
function a(){
this.iterate = function(){
Object.keys(this).forEach(function(name) {
console.log(name + "=" + this[name]);
});
};
}
您这样做在很大程度上是正确的,只是for in
循环对象属性的名称,而不是它们的值。因此,要输出属性的值,请使用this[name]
:
function a(){
this.iterate = function(){
for (var name in this){
console.log(name + "=" + this[name]);
}
};
}
请注意,
中的将循环遍历对象的可枚举属性,包括它从原型继承的属性。如果您只想要自己的属性,而不是继承的属性,则可以通过hasOwnProperty
检查该属性是否为“自己的”属性:
function a(){
this.iterate = function(){
for (var name in this){
if (this.hasOwnProperty(name)) {
console.log(name + "=" + this[name]);
}
}
};
}
或者使用方便的Object.keys
,它为您提供了自己的可枚举属性数组:
function a(){
this.iterate = function(){
Object.keys(this).forEach(function(name) {
console.log(name + "=" + this[name]);
});
};
}
很酷,但是链接到这个类似圣经的答案就足够了:)@gurvinder372:好吧,这是关于通过数组和类似数组的东西循环,而不是对象。但是…:-)很酷,但是链接到这个类似圣经的答案就足够了:)@gurvinder372:好吧,这是关于通过数组和类似数组的东西循环,而不是对象。但是…:-)