Object

Object是在javascript中一個被咱們常用的類型,並且JS中的全部對象都是繼承自Object對象的。雖然說咱們平時只是簡單地使用了Object對象來存儲數據,並無使用到太多其餘功能,可是Object對象其實包含了不少頗有用的屬性和方法,尤爲是ES5增長的方法,所以,本文將從最基本的介紹開始,詳細說明了Object的經常使用方法和應用。javascript

建立對象html

首先咱們都知道,對象就是一組類似數據和功能的集合,咱們就是用它來模擬咱們現實世界中的對象的。那在Javascript中,建立對象的方式一般有兩種方式:構造函數和對象字面量。java

new構造函數法
 var person = new Object();
person.name = "惟戀她城";
person.age = 25;

這種方式使用new關鍵字,接着跟上Object構造函數,再來給對象實例動態添加上不一樣的屬性。這種方式相對來講比較繁瑣,通常推薦使用對象字面量來建立對象。數組

對象字面量

對象字面量很好理解,使用key/value的形式直接建立對象,簡潔方便。瀏覽器

var person = {
  name:"惟戀她城",
  age: 25
};

這種方式直接經過花括號將對象的屬性包起來,使用key/value的方式建立對象屬性,每一個屬性之間用逗號隔開。
注意:若是是最後一個屬性,後面就不要加逗號,由於在一些舊的瀏覽器下會報錯。函數

對象實例的屬性和方法

無論經過哪一種方式建立了對象實例後,該實例都會擁有下面的屬性和方法,下面將會一一說明。prototype

constructor屬性

constructor屬性是保存當前對象的構造函數,前面的例子中,constructor保存的就是Object方法。htm

var obj1 = new Object();
obj1.id = "obj1";
var obj2 = {
   "id": "obj2"
};

console.log(obj1.constructor);//function Object(){}
console.log(obj2.constructor);//function Object(){} 

 

hasOwnProperty(propertyName)方法

hasOwnProperty方法接收一個字符串參數,該參數表示屬性名稱,用來判斷該屬性是否在當前對象實例中,而不是在對象的原型鏈中。咱們來看看下面這個例子:對象

var arr = [];
console.log(arr.hasOwnProperty("length"));//true
console.log(arr.hasOwnProperty("hasOwnProperty"));//false

在這個例子中,首先經過定義了一個數組對象的實例arr,咱們知道數組對象實際是經過原型鏈繼承了Object對象,而後擁有本身的一些屬性,咱們經過hasOwnProperty方法判斷length是arr本身的屬性,而hasOwnProperty是在原型鏈上的屬性。
hasOwnProperty方法能夠和for..in結合起來獲取對象本身的key。blog

isPrototypeOf(Object)方法

isPrototype方法接收一個對象,用來判斷當前對象是否在傳入的參數對象的原型鏈上,提及來有點抽象,咱們來看看代碼。

function MyObject() {}
var obj = new MyObject();
console.log(Object.prototype.isPrototypeOf(obj));

咱們知道MyObject是繼承自Object對象的,而在JS中,繼承是經過prototype來實現的,因此Object的prototype一定在MyObject對象實例的原型鏈上。

propertyIsEnumerable(prototypeName)方法

prototypeIsEnumerable用來判斷給定的屬性是否能夠被for..in語句給枚舉出來。看下面代碼:

var obj = {
name: "objName"
}
 for (var i in obj) {
console.log(i);
}

執行這段代碼輸出字符串「name」,這就說明經過for…in語句能夠獲得obj的name這個屬性,可是咱們知道,obj的屬性還有不少,好比constructor,好比hasOwnPrototype等等,可是它們沒有被輸出,說明這些屬性不能被for…in給枚舉出來,能夠經過propertyIsEnumerable方法來獲得。

console.log(obj.propertyIsEnumerable("constructor"));//false

判斷「constructor」是否能夠被枚舉,輸出false說明沒法被枚舉出來。

toLocaleString()方法

toLocalString方法返回對象的字符串表示,和代碼的執行環境有關。

var obj = {};
console.log(obj.toLocaleString());//[object Object]
var date = new Date();
console.log(date.toLocaleString());//2016/2/28 下午1:39:27

 

toString()方法

toString用來返回對象的字符串表示。

var obj = {};
console.log(obj.toString());//[object Object] 
var date = new Date();
console.log(date.toString());//Sun Feb 28 2016 13:40:36 GMT+0800 (中國標準時間)

 

valueOf()方法

valueOf方法返回對象的原始值,多是字符串、數值或bool值等,看具體的對象。

var obj = {
name: "obj"
};
console.log(obj.valueOf());//Object {name: "obj"}
var arr = [1];
console.log(arr.valueOf());//[1]
var date = new Date();
console.log(date.valueOf());//1456638436303

如代碼所示,三個不一樣的對象實例調用valueOf返回不一樣的數據。

摘自:https://www.cnblogs.com/orange123/p/9948300.html

相關文章
相關標籤/搜索