1 Object屬性和方法
var a = ['Hello', 'World'];
Object.keys(a) // ["0", "1"]
Object.getOwnPropertyNames(a) // ["0", "1", "length"]
Object.prototype.hasOwnProperty():判斷某個屬性是否為當前對象自身的屬性,還是繼承自原型對象的屬性。
var obj = new Object();
1 + obj // "1[object Object]"
var obj = new Object();
obj.valueOf = function () {
return 2;
};
1 + obj // 3
數組、字符串、函數、Date 對象都分別部署了自定義的toString方法,覆蓋了Object.prototype.toString方法。
[1, 2, 3].toString() // "1,2,3"
'123'.toString() // "123"
(function () {
return 123;
}).toString()
// "function () {
// return 123;
// }"
(new Date()).toString()
// "Tue May 10 2016 09:11:31 GMT+0800 (CST)"
2 Object非常實用的類型判斷
數值:返回[object Number]。
字符串:返回[object String]。
布爾值:返回[object Boolean]。
undefined:返回[object Undefined]。
null:返回[object Null]。
數組:返回[object Array]。
arguments 對象:返回[object Arguments]。
函數:返回[object Function]。
Error 對象:返回[object Error]。
Date 對象:返回[object Date]。
RegExp 對象:返回[object RegExp]。
其他對象:返回[object Object]。
由于實例對象可能會自定義toString方法,覆蓋掉Object.prototype.toString方法,所以為了得到類型字符串,最好直接使用Object.prototype.toString方法。通過函數的call方法,可以在任意值上調用這個方法,幫助我們判斷這個值的類型。
Object.prototype.toString.call(value)
3 數組的屬性和方法
Array.isArray方法返回一個布爾值,表示參數是否為數組。它可以彌補typeof運算符的不足。
數組插入刪除可以使用splice。
sort實用用法
[
{ name: "張三", age: 30 },
{ name: "李四", age: 24 },
{ name: "王五", age: 28 }
].sort(function (o1, o2) {
return o1.age - o2.age;
})
// [
// { name: "李四", age: 24 },
// { name: "王五", age: 28 },
// { name: "張三", age: 30 }
// ]
sort會改變原數組
4 String屬性和方法
'abc'[1] // "b"
slice和數組用法一樣