JS原型鏈 原型鏈逐步攻破

2021-09-27 11:38:50 字數 1074 閱讀 5258

概述:建立物件有幾種方法   原型、建構函式、例項、原型鏈     instanceof 的原理     new 運算子

建立物件有幾種方法:

var o1 = //物件字面量

var o11 = new object()

var m = function () //顯示構建函式建立物件

var o2 = new m()

var p = //使用現有的物件來提供新建立的物件的__proto__

var o3 = object.create(p)

原型、建構函式、例項、原型鏈建構函式和原型物件的關係:可以通過 new 運算子生成乙個例項,任何函式都可以成為建構函式,宣告乙個函式時,自帶 prototype 屬性,該屬性初始化乙個空物件(原型物件)。

例項和原型物件的關係:例項的__proto__ 引用建構函式的prototype物件

原型鏈:從例項物件向上找與構建該例項相關聯的物件,關聯物件亦有建立它的物件,逐級向上找,直到object.prototype 至此鏈到達頂端。

注意:1、只有函式有prototype,物件沒有    2、只有例項物件有 __proto__

instanceof 原理:判斷例項物件的 __proto__ 屬性和建構函式的 prototype 是否是同乙個位址引用

new 運算子:new 運算子後跟的是乙個建構函式

new運算子原理/步驟:

1、乙個新的物件被建立。它繼承自建構函式的原型物件 prototype

2、建構函式被執行。執行的時候,相應的傳參會被傳入,同時上下文(this)會被指定為這個新例項。當沒有任何引數的情況下,new foo 等同於 new foo()

3、如果建構函式返回了乙個「物件」,那麼這個物件會取代整個 new 出來的結果。如果建構函式沒有返回物件,那麼 new出來的結果為步驟1建立的物件。

js 原型與原型鏈

5條原型規則 1.所有的引用型別 陣列 物件 函式 都具有物件特性,即可自由擴充套件屬性 除了 null 除外 2.所有的引用型別 陣列 物件 函式 都有乙個 proto 隱式原型 屬性,屬性值是乙個普通的物件。3.所有的函式,都有乙個prototype 顯式原型 屬性,屬性值也是乙個普通的物件。4...

JS原型物件,原型鏈

js中建立物件都是通過建構函式建立的,所以每個物件中都有乙個指向其建構函式的指標constructor var obj new object var arr new array var obj2 字面量建立實質上是上面方式的簡寫 var arr2 var str new string test 建立...

JS原型和原型鏈

建立建構函式 function word words word.prototype 建立例項 var w new word hello world w.print function w.print hello world w.alert hello world function.prototype....