Js原生提供Object對象,O大寫,全部的其餘對象都繼承自Object對象,都是Object的實例javascript
Object對象的原生方法分爲兩類:java
自己的方法:直接定義在Object對象的方法數組
實例方法:定義在Object原型對象Object.prototype上的方法,能夠被Object實例直接使用函數
凡是定義在Object.prototype對象上的屬性和方法將被全部實例對象共享工具
首先是Object做爲函數的用法spa
(1)工具函數:用來將任意值轉爲對象,這個方法經常使用於保證某個值必定是對象prototype
tips:若是參數爲空(或undefined和null),返回一個空對象對象
若是參數是原始類型的值,轉換爲對應的包裝對象的實例blog
若是參數是對象,不用轉換繼承
用法以下:
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()
接受一個字符串做爲參數,返回一個布爾值,表示該實例對象自身是否具備該屬性