1、物件內建屬性方法:object.keys();該方法返回乙個陣列,陣列內包括物件內可列舉屬性以及方法名稱。陣列中屬性名的排列順序和使用for...in
遍歷該物件時返回的順序一致。
// 通過呼叫object.keys()方法,獲取物件上已定義(可列舉)的屬性和方法
var keys= object.keys(testobj);console.log(keys); // 輸出 keys ["name", "age", "action"]
注意:在es5裡,如果此方法的引數不是物件(而是乙個原始值),那麼它會丟擲 typeerror。而在es2015中,非物件的引數將被強制轉換為乙個物件。
object.keys("testobj");2、// typeerror: "testobj" is not an object (es5 code)
object.keys("testobj");
//["name", "age", "action"] (es2015 code)
object.getownpropertynames():
方法返回乙個指定物件所有自身屬性的屬性名(包括不可列舉屬性但不包括symbol值作為名稱的屬性)組成的陣列。該陣列是
obj
自身擁有的列舉或不可列舉屬性名稱字串集合。 陣列中列舉屬性的順序與通過for...in
迴圈(或object.keys()
)迭代該物件屬性時一致。陣列中不可列舉屬性的順序未定義。var keys = object.getownpropertynames(testobj);console.log(keys); // 輸出 keys ["name", "age", "action"]
3、當然除了以上兩個外,還有最原始的for...in迴圈(估計是平時迴圈用的多了,反倒是這個不怎麼用!)
var keys =;for(var i in testobj)
console.log(keys); // keys ["name", "age", "action"]
下面通過乙個例項,直觀說明三者之間的區別:
var testobj = object.create({}, ,enumerable: false
}});testobj.name = "shangguan";
testobj.age = 25;
testobj.action = function();
function getkeys()
//返回直接定義在該物件上的可列舉屬性,非繼承。通過hasownproperty()方法可以將那些屬性是物件自身(非繼承)屬性篩選出來,從而將不可列舉屬性排除出去
prop要檢測的屬性,字串 名稱或者 symbol。 返回值:用來判斷某個物件是否含有指定的屬性 的boolean值
for (var i in testobj) //輸出 name,age,action}}
總結:如果只需要獲取可列舉屬性,那麼
object.keys()
或for...in
迴圈迭代即可(object.getownpropertynames()也可以獲取到原型鏈上的可列舉屬性,不過需要通過hasownproperty()
方法過濾掉不可列舉屬性)。js陣列的所有方法
修改器方法 下面的這些方法會改變呼叫它們的物件自身的值 array.prototype.copywithin 在陣列內部,將一段元素序列拷貝到另一段元素序列上,覆蓋原有的值。array.prototype.fill 將陣列中指定區間的所有元素的值,都替換成某個固定的值。array.prototype...
python 列表物件的所有方法
記錄下,很容易忘記 list.extend l 將乙個給定列表中的所有元素都新增到另乙個列表中,相當於 a len a l list.remove x 刪除列表中值為 x 的第乙個元素。如果沒有這樣的元素,就會返回乙個錯誤。list.pop i 從列表的指定位置刪除元素,並將其返回。如果沒有指定索引...
String所有方法
char charat int index 返回指定索引處的 char 值。int compareto object o 把這個字串和另乙個物件比較。int compareto string anotherstring 按字典順序比較兩個字串。int comparetoignorecase stri...