对象的属性及属性值遍历

时间:2022-08-25 13:28:20

题目描述

找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~)
1、返回数组,格式为 key: value
2、结果数组不要求顺序
示例1

输入

复制
var C = function() {this.foo = 'bar'; this.baz = 'bim';}; 
C.prototype.bop = 'bip'; 
iterate(new C());

输出

复制
["foo: bar", "baz: bim"]

我的解答:

对象的属性及属性值遍历

不过提交通不过。原因:hasOwnProperty()方法使用错误,语法object.hasOwnProperty(key);

正确解答:

function iterate(obj) {
    var arr=[];
    for(var item in obj){
        if(obj.hasOwnProperty(item)){
            arr.push(item+': '+obj[item]); //注意这里所说的空格
        }
    }
    return arr;
}

补充知识点:

hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性。如果有,返回true,否则返回false

该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法。

IE 5.5+、FireFox、Chrome、Safari、Opera等主流浏览器均支持该函数

语法

object.hasOwnProperty( propertyName )

参数

参数 描述
propertyName String类型指定的属性名称

返回值

hasOwnProperty()函数的返回值为Boolean类型。如果对象object具有名称为propertyName的属性,则返回true,否则返回false