原型鏈理解和解析,原型鏈面試通關

2021-09-24 13:31:08 字數 1411 閱讀 2226

var f = function () ;

var g = function();

g.prototype.each=function();

object.prototype.a=function () ;

function.prototype.b = function () ;

//function 指的是繼承在所有的window上面的宣告的函式

var f = new f();

var g = new g();

console.log(a instanceof function);//(1)

//(1) object是所有的物件的根,在根上面新增了乙個物件a,其實就是新增到__proto__上面,function預設是在object手動新增的物件a;以後新增的物件是a的子集可以這麼理解 b就是子集

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

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

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

console.log(f instanceof function);//true

console.log(f instanceof function);//false

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

console.log(f.prototype.__proto__);//原型的規則就是現在他自己的本身去查詢然後早__proto__上面去找一層一層的去檢視找

console.log(f instanceof f.prototype.constructor);//實力化的物件是建構函式的constructor的屬性

f.a.__proto__.b();//列印出 b() 結合(1)理解 所以在a物件的原型下面就可以找到b();如果直接f.b();就會找不到

// f.b();//報錯 uncaught typeerror: f.b is not a function 因為b物件是a物件的子集所以直接呼叫就會沒有

g.a.__proto__.b();//列印出 b() 結合(1)和(2)理解 也可以拿到b函式物件

//f物件和g物件是建構函式的例項 建構函式上面新增了原型的方法在查詢方法的時候就會在__proto__上面去檢視所以g和f就能獲取到b()函式物件,產生層級的原因看(1)

console.log(f);

console.log(g);//通過建構函式this新增就不會在__proto__,直接在例項化物件上面

console.log(object.prototype);//手動給object物件新增的所有屬性

//不足之處提出大家共同進步!謝謝

js 原型 原型鏈理解

執行發現如下 自定義乙個函式,函式包含兩個關鍵資料 prototype,proto 1 原型 prototype person具有prototype屬性 包含我們定義的屬性name,age以及constructor,並且constructor指向我們的person函式,可以理解為prototype就...

原型 原型鏈

var animal function var dog function animal.price 2000 dog.prototype animal var tidy new dog console.log dog.price 為什麼輸出 undefined console.log tidy.pr...

原型,原型鏈

原型object.hasownproperty proname object 乙個物件的例項 propname 乙個屬性名稱的字串值 返回乙個布林值原型鏈中的this 原型物件 原型物件的作用 一般情況下,會把方法宣告在原型物件裡。目的是實現繼承。當物件訪問自身屬性或方法時,先從自身找有沒有,如果有...