Js學習(7)標準庫-object物件
Js原生提供Object物件,O大寫,所有的其他物件都繼承自Object物件,都是Object的例項
Object物件的原生方法分為兩類:
本身的方法:直接定義在Object物件的方法
例項方法:定義在Object原型物件Object.prototype上的方法,可以被Object例項直接使用
凡是定義在Object.prototype物件上的屬性和方法將被所有例項物件共享
首先是Object作為函式的用法
(1)工具函式:用來將任意值轉為物件,這個方法常用於保證某個值一定是物件
tips:如果引數為空(或undefined和null),返回一個空物件
如果引數是原始型別的值,轉換為對應的包裝物件的例項
如果引數是物件,不用轉換
用法如下:
var obj = Object();
// 等同於
var obj = Object(undefined);
var obj = Object(null);
obj instanceof Object // true
(2)建構函式:通過它來生成新物件
兩種形式
var obj = new Object(); var o1 = {a: 1}; var o2 = new Object(o1); o1 === o2 // true 可以說var obj={}是var obj=new Object的簡便寫法
具體針對不同引數 規則和工具函式時一樣
接下來就是Object物件的方法
靜態方法:Object物件自身的方法
Object.keys():引數是一個物件,返回一個數組,該陣列的成員都是該物件自身的(非繼承的)所有屬性名
Object.getOwnPropertyNames:與keys方法類似,但是也會返回不可列舉的屬性
var a = ['Hello', 'World'];
Object.keys(a) // ["0", "1"]
Object.getOwnPropertyNames(a) // ["0", "1", "length"]
可以用這兩個方法計算物件屬性的個數
Object.keys(obj).length;
一般情況下,幾乎總是使用Object.keys方法,遍歷陣列的屬性
其他靜態方法
(1)Object.prototype.valueOf()
返回一個物件的值,預設情況下返回物件本身
主要用途是,JS自動型別轉換時會呼叫這個方法,可以自定義valueOf方法,得到想要的結果
var obj = new Object();
obj.valueOf = function () {
return 2;
};
1 + obj // 3
(2)Object.prototype.toString
返回一個物件的字串形式,預設情況下返回型別字串
這個是最原始的 返回的字串說明物件的型別
可以自己寫 覆蓋
var obj = new Object();
obj.toString = function () {
return 'hello';
};
obj + ' ' + 'world' // "hello world"
陣列,字串,函式,Date物件都分別部署了自定義的toString方法對此進行覆蓋
這個最原始的可以用來判斷資料型別,返回的字串是“【object 對應物件的型別】”
如數值 返回 【object Number】
(3)Object.prototype.toLoacleString()
和toString的作用在於:留出一個介面,讓不同的物件實現自己版本的toLocalString,用來返回針對某些地域的特定的值
目前主要有三個物件自定義了這個方法
Array Number Data
(4)Object.prototype.hasOwnProperty()
接受一個字串作為引數,返回一個布林值,表示該例項物件自身是否具有該屬性