JavaScript 遍历对象属性:区分自有属性与继承属性

作者:拾光

时间:2026-10-26

浏览:633

本文介绍在 JavaScript 中使用 for in 循环遍历对象属性的方法。默认情况下,for in 会遍历原型链上的属性,通过 hasOwnProperty 方法可以过滤掉继承属性,仅保留对象自身的属性,从而确保遍历结果的准确性。

文章目录

JavaScript 遍历对象属性:区分自有属性与继承属性

示例如下:


代码实现:

 
Function.prototype.addMethod=function(methodName,func){
if(!this.prototype[methodName]){
this.prototype[methodName]=func;//给原型增加方法,此方法会影响到该类型的实例上
} 
return this.prototype;//返回原型,此类型实例可以进行链形调用
} 
function CustomObject(name,value){
this.name=name || 'CustomeObject';
this.value=value || 0;
this.toString=function(){
return '[name:'+this.name+',value:'+this.value+']'
} 
} 
CustomObject.addMethod('testFun',function(){})
var obj=new CustomObject();
var info='';
for(var property in obj){
info+=property+" | ";
} 
alert(info); // name | value | toString | testFun |

此时,for in 循环会将对象从 prototype 继承的属性也一并遍历出来。若需排除这些继承属性,可使用 hasOwnProperty 语句进行判断。例如:


代码实现:

 
Function.prototype.addMethod=function(methodName,func){
if(!this.prototype[methodName]){
this.prototype[methodName]=func;//给原型增加方法,此方法会影响到该类型的实例上
} 
return this.prototype;//返回原型,此类型实例可以进行链形调用
} 
function CustomObject(name,value){
this.name=name || 'CustomeObject';
this.value=value || 0;
this.toString=function(){
return '[name:'+this.name+',value:'+this.value+']'
} 
} 
CustomObject.addMethod('testFun',function(){})
var obj=new CustomObject();
var info='';
for(var property in obj){
if(!obj.hasOwnProperty(property)) continue;
info+=property+" | ";
} 
alert(info); // name | value | toString |

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章