JS面試 第三章 原型與原型鏈

2022-09-14 09:39:07 字數 3391 閱讀 5881

如何準確判斷乙個變數是陣列型別

寫乙個原型鏈繼承的例子

描述new乙個物件的過程

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

new的時候把引數傳入也可不傳

new函式執行時,建立乙個空物件

this指向這個新物件this = {}

執行**,即對this.name等開始順序賦值

賦值完後,預設return this

賦值給ff.namef.agef.class生效

function

foo(name, age)

var f =

newfoo

('zhangsan',20

);// var f1 = new foo('lisi', 23); 可建立多個物件

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

var obj =

;obj.a =

100;

var arr =

;arr.a =

100;

functionfn(

);fn.a =

100;

所有的引用型別,都有乙個__proto__屬性(隱式原型屬性),屬性值是乙個普通的物件

console.

log(obj.__proto__)

;console.

log(arr.__proto__)

;console.

log(fn.__proto__)

;

所有函式,都有乙個prototype屬性(顯式原型屬性),屬性值是乙個普通的物件

console.

log(fn.prototype)

;

所有引用型別__proto__屬性值指向(完全等===)他的建構函式的prototype屬性值

console.

log(obj.__proto__ === object.prototype)

當試圖得到乙個物件的某個屬性時,若果這個物件本身沒有這個屬性,那麼它的__proto__(即它的建構函式的prototype)中尋找

// 建構函式

function

foo(name, age)

foo.prototype.

alertname

=function()

// 建立例項

var f =

newfoo

('zhangsan');

f.printname

=function()

// 測試

f.printname()

;f.alertname()

;

var item;

for(item in f)

}

// 建構函式

function

foo(name, age)

foo.prototype.

alertname

=function()

// 建立例項

var f =

newfoo

('zhangsan');

f.printname

=function()

// 測試

f.printname()

;f.alertname()

;f.tostring()

;// 要去f.__proto__.__proto__中查詢

如何準確判斷乙個變數是陣列型別

var arr =

arr instanceof

array

//true

typeof arr //object,typeof是無法判斷陣列的

寫乙個原型鏈繼承的例子

// 動物

function

animal()

}// 狗

function

dog()}

dog.prototype =

newanimal()

;// 哈士奇

var hashiqi =

newdog()

;console.

log(hashiqi.eat)

;console.

log(hashiqi.bark)

;

// 乙個封裝dom查詢的例子

function

elem

(id)

elem.prototype.

html

=function

(val)

else

}elem.prototype.on=

function

(type, fn)

var div1 =

newelem

('div1');

console.

log(div1.

html()

);div1.

html

('hello world')

.on('click'

,function()

).html

('j**ascript

')

描述new乙個物件的過程

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

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的值,如上圖。...