原型鏈 Object的一些方法

2022-08-22 23:21:13 字數 2097 閱讀 7437

經典繼承封裝函式

o1.__proto__===o.prototype===o2

建構函式的例項的__proto__和建構函式的prototype是全等於的

function craeate(obj);

f.prototype=obj;

return new f();

}es5(ie9+)支援object.create()固定方法

var o1=;

var o2=object.create?object.create(o1):create(o1);能力檢測

原型鏈:任何物件都是繼承自原型物件,原型物件也有它自己的原型物件,總是有乙個物件,是沒有

__proto__屬性的,這個物件,就是原型鏈的頂端

var o={};

console.log(o.__proto__);

var arr=;

console.log(arr.__proto__.__proto__);

var f1=function(){};

console.log(f1.__proto__.__proto__);

var reg=/[0-3]/;

console.log(reg.__proto__.__proto__);

任何乙個物件的prototype都定義了乙個tostring()

obj.tostring()---->"[object object]"

arr.tostring()---->"1,2,3"

reg.tostring()---->"/hello/"正規表示式的字串型別

判斷內建物件的時候,可以使用object.prototype.tostring.call(物件)

得到"[object 物件的資料型別]"

object.prototype.tostring.call(arr)

object.prototype.tostring.call(reg)

object.prototype.tostring.call(new date())得到乙個[object,資料型別]

判斷乙個物件是否擁有自己的屬性hasownproperty,返回布林型別

o.hasownproperty("屬性")

判斷當前物件是否是引數物件的原型物件isprototypeof

ar o1={};

object.prototype.isprototypeof(o1)返回布林值

判斷當前物件的某個屬性是否是可列舉的propertyisenumerable,所謂不可列舉的屬性就是不能被

for(key in o)遍歷

object.defineproperty(obj,"gender",)給obj增加不可以列舉屬性"gender"

value屬性給gender設定了值,還有別的屬性enumerable:false預設為false,為true時表示是可列舉

屬性,writable:true可寫的物件,為true時才能被賦值運算,writable:false時不能賦值運算,預設為false

get:function()return的值就是屬性設定的值,外面就不用寫value了

set接受唯一引數,並將該引數的新值分配給屬性gender

var _number;

var o2={};

object.defineproperty(o2,"number",,

set:function(v)

}});

o2.number=35;//把35賦值給v

var arr=;

console.log(arr instanceof array);//true

console.log(arr instanceof object);//true

var reg=/word/;

console.log(reg instanceof regexp);//true

console.log(reg instanceof object);//true

所以檢測乙個資料的物件型別這裡有兩種方法,比如檢測物件是不是陣列

instanceof array object.prototype.tostring.call()==="[object array]"

Object 的一些方法

object的靜態方法 靜態方法 在類身上的方法,動態方法 在例項身上的方法 object.assgin 淺拷貝 將多個物件的可列舉屬性拷貝到目標物件上,並且返回賦值後的目標物件。從右往左賦值。object.defineproperties obj,給物件定義屬性,如果存在該屬性,則用新定義的屬性更...

JS原型鏈的一些理解

關於原型鏈我的理解是乙個建構函式的原型作為另乙個建構函式的例項形成的繼承關係 在js高階程式設計中有這樣乙個圖 當我們定義乙個函式時會有乙個原型,即圖中的supertype prototype,這時原型物件中會有乙個constructor指向建構函式supertype,這便是建構函式與原型物件之間的...

原型鏈中Function與Object的關係

原型鏈中function與object的關係 最近在找工作,面試的時候有遇到原型相關的一些問題,個人又有點暈,回答的 不是很好,現在總結一下 object.proto function.prototype function.proto function.prototype array.proto f...