JS基礎知識 原型與原型鏈

2021-09-26 03:26:31 字數 1550 閱讀 7491

1、如何準確判斷乙個變數的陣列型別

2、寫乙個原型鏈繼承的例子

3、描述new乙個物件的過程

4、zepto(或其他框架中如何使用原型鏈)

知識點:

(1)建構函式

function

foo(name,age)

var f = new foo('jay',20);//可以建立多個物件

(2)建構函式——擴充套件

(3)原型規則和示例

所有引用型別(陣列、物件、函式),都具有物件特性,即可自有擴充套件屬性(除了「null」以外)

所有引用型別(陣列、物件、函式),都有乙個_proto_屬性,屬性值是乙個普通物件

所有函式,都有乙個prototype屬性,屬性值也是乙個普通物件

所有的引用型別(陣列、物件、函式),_proto_屬性值指向它的建構函式的「 prototype 」屬性值

當時圖得到乙個物件的某個屬性時,如果這個物件本身沒有這個屬性,那麼會去它的_proto_(即它的建構函式的prototype裡面找)

var obj = {} ; obj.a = 100;

var arr = [ ] ; arr.a = 100;

function

fn(){}

fn.a = 100;

console.log(obj._proto_);

console.log(arr._proto_);

console.log(fn._proto_);

console.log(fn.prototype)

console.log(obj._proto_ === object.prototype)

//

建構函式

function

foo(name,age)

foo.prototype.alertname = function

()//

建立示例

var f = new foo('jay');

f.printname = function

()//

測試f.printname()

f.alertname()

//迴圈物件自身的屬性

var item

for(item in f)

}

(4)原型鏈

//

建構函式

function

foo(name,age)

foo.prototype.alertname = function

()//

建立示例

var f = new foo('jay');

f.printname = function

()//

測試f.printname()

f.alertname()

f.tostring() //要去 f._proto_._proto_中找

js 原型與原型鏈

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

JS原型與原型鏈

凡是通過new function 建立的物件都是函式物件,其他的是普通物件。var o1 var o2 new object var o3 new f1 function f1 var f2 function var f3 new function str console.log str conso...

js原型與原型鏈

定義函式的時候都建立了乙個函式物件,裡面有個prototype屬性指向了乙個object空物件,這個物件就是函式的原型物件。原型物件中有個constructor屬性,指向函式物件 通過new建立的物件,有個 proto 屬性 左右都是兩個下劃線 它等於對應建構函式的的prototype的值,如上圖。...