小測試來檢驗一下你原型鏈理解的怎麼樣。

2022-04-15 16:39:57 字數 1619 閱讀 2135

var person = function

(name);

person.prototype.getname = function

()

var person1 = new person('mick');

person1.getname();

提問:person1.__proto__ 是什麼?​person.__proto__ 是什麼?person.prototype.__proto__ 是什麼?

object.__proto__ 是什麼?

object.prototype__proto__ 是什麼?

答案:第一題:

因為person1.__proto__ === person1 的建構函式.prototype

因為person1的建構函式 === person

所以person1.__proto__ === person.prototype

第二題:

因為person.__proto__ === person的建構函式.prototype

因為person的建構函式 === function

所以person.__proto__ === function.prototype

第三題:

person.prototype是乙個普通物件,我們無需關注它有哪些屬性,只要記住它是乙個普通物件。

因為乙個普通物件的建構函式 === object

所以person.prototype.__proto__ === object.prototype

第四題,參照第二題,因為 person 和 object 一樣都是建構函式

第五題:

object.prototype物件也有proto屬性,但它比較特殊,為 null 。因為 null 處於原型鏈的頂端,這個只能記住。

object.prototype.__proto__ === null

js 在建立物件(不論是普通物件還是函式物件)的時候,都有乙個叫做__proto__的內建屬性,用於指向建立它的建構函式的原型物件。

物件 person1 有乙個__proto__屬性,建立它的建構函式是 person,建構函式的原型物件是 person.prototype ,所以:

person1.__proto__ == person.prototype

所有函式物件的__proto__都指向function.prototype,它是乙個空函式(empty function);

考察一下你對js繼承鏈的理解

請深入理解下面的程式,並解釋輸出結果 執行環境 maxos,node v6.3.1,非嚴格模式執行 var print function input function foo return this foo.getname function foo.prototype.getname functio...

說一下你對MVC的理解?

mvc是model view controler的簡稱。即模型 檢視 控制器。mvc是一種設計模式,它強制性的把應用程式的輸入 處理和輸出分開。mvc中的模型 檢視 控制器它們分別擔負著不同的任務。model 處理業務邏輯的模組。如service dao entity view 負責頁面顯示,顯示m...

你的食物變質沒?用AI演算法來檢測一下吧

摘要 本文使用ai演算法檢測披薩是否變質,為食品檢測提供乙個新的思路。最近一條幼兒園採用過期食物的新聞引起了社會的強烈關注,對於食品安全而言,國家一直是嚴格要求的,尤其是對於嬰幼兒食品安全的標準,部分已經超越了國際上的標準。但可能是由於無法嚴格地執行到每乙個地方且檢測週期較長,造成這一現象的出現,著...