1. 程式人生 > >物件的屬性及屬性值遍歷

物件的屬性及屬性值遍歷

題目描述

找出物件 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 )

引數

引數描述
propertyNameString型別指定的屬性名稱

返回值

hasOwnProperty()函式的返回值為Boolean型別。如果物件object

具有名稱為propertyName的屬性,則返回true,否則返回false