對原型鏈的理解

2022-05-21 10:05:24 字數 1261 閱讀 6620

有很多同學對原型鏈感到困擾,希望這篇文章對這些同學有一些幫助。

(1)所有的構造器的constructor都指向function(包括自定義的建構函式)

console.log(object.constructor);

// function

console.log(string.constructor);

// function

console.log(array.constructor);

// function

console.log(function.constructor);

// function

(2)function的prototype指向乙個特殊匿名函式,而這個特殊匿名函式的proto指向 object.prototype
function.prototype.__proto__ === object.prototype; // true
// 構造器的型別就是function

構造器.prototype.__proto__(object除外) === object.prototype

判斷 建構函式.prototype 是否在元素的原型鏈上

分析

function instanceof object // true

object instanceof function // true

(1)當把 function 當成元素時 function.proto= function.construtor.prototype

由1-(1)可知 function.construtor = function

所以function.proto= function.prototype,此時他們都指向乙個匿名函式

而這個匿名函式的__proto__指向 object.prototype ,所以第乙個為true

(2)當把 object 當成元素時,

object.proto= object.construtor.prototype

由1-(1)可知

所有構造器的 constructor 都指向 function ,object.construtor = function

所以object.proto= function.prototype,所以第二個為true

對原型鏈的理解

varf function object.prototype.a function function.prototype b function varf newf 關於這段 正確的結論是 這個問題涉及到js的原型繼承 1.f.proto f 的建構函式 prototype f.prototype 2...

對原型和原型鏈的理解

一 原型 所有引用型別都有乙個 proto 隱式原型 屬性,屬性值是乙個普通的物件 所有函式都有乙個prototype 原型 屬性,屬性值是乙個普通的物件 所有引用型別的 proto 屬性指向它建構函式的prototype 二 原型鏈 當訪問乙個物件的某個屬性時,會先在這個物件本身屬性上查詢,如果沒...

對JS原型機原型鏈的理解

使用建構函式建立物件 function person var person1 newperson person1.name 張三 console.log person1.name 張三 person就是乙個建構函式,通過new建立了person1物件例項。其實建構函式和普通函式沒有多大區別,首先字母...