1. 程式人生 > >Js學習(7)標準庫-object物件

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()

接受一個字串作為引數,返回一個布林值,表示該例項物件自身是否具有該屬性