第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

麻煩大佬幫忙解釋一下__proto__ 和 prototype 的區(qū)別?

麻煩大佬幫忙解釋一下__proto__ 和 prototype 的區(qū)別?

慕無忌1623718 2022-01-01 07:07:25
var arr = new Array();console.log(arr.prototype); //undefinedconsole.log(arr.__proto__); //空數(shù)組console.log(Array.prototype); //空數(shù)組console.log(Array.__proto__); //function()我知道在 new 的過程中,有三個步驟(1) var arr = {};//初始化一個 arr 對象(2) arr.__proto__ = Array.prototype;(3) Array.call(arr); //回調函數(shù)構造 arr然后在 ECMA 中可以查到 Array.prototype = new Object();所以 arr.prototype undefined, arr.__proto__ == Array.prototype 我可以理解,但是為什么 Array.prototype 是一個空數(shù)組, Array.__proto__ 確是一個 function() 呢?在 ECMA 中查到,Array 的構造函數(shù)是 function Array(){} ,是不是跟這個有關呢?
查看完整描述

1 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

  1. 每個函數(shù)就是一個對象(Function),函數(shù)對象都有一個子對象 prototype對象,類是以函數(shù)的形式來定義的。prototype表示該函數(shù)的原型,也表示一個類的成員的集合。

  2. 也就是說prototype 是原型,是Function對象才有的屬性,原型主要是用來實現(xiàn)繼承,從而用js 進行面向對象編程

  3. 如 Foo 是一個Function對象,是有prototype屬性的 ,它指向一個Boo 的實例對象

  4. 而p 是一個 Foo 的實例對象,不是一個Function 對象,沒有prototype 屬性,但是p有一個私有屬性__proto__ 這個屬性,一般不直接訪問的,事實上這個屬性就是 Foo.prototype
    在chrome控制臺中測試
    console.log(p.__proto__ == Foo.prototype)
    VM952:2 true
    console.log(p.__proto__ === Foo.prototype)
    VM956:2 true
    上述測試都輸出true,說明他們確實是同一個東西

  5. js的繼承是通過原型繼承的,有個原型鏈的概念,而原型鏈就是通過__proto__屬性實現(xiàn)的
    function Boo() {this.x="test in Boo";}
    function Foo() {this.y = "test in Foo"}
    Foo.prototype = new Boo;
    p=new Foo;
    console.log(p.y);//test in Foo

    console.log(p.x);//test in Boo
    Foo 中并沒有屬性x,當p找不到屬性x時,就到p.__proto__屬性(指向原型)中找,原型中是有x屬性的,于是輸出x的值

  6. 如果不考慮內部實現(xiàn),就好像屬性x是從Boo中繼承的一樣
    console.log(p.__proto__);   輸出 Boo{}表示一個空的Boo對象(通過 new Boo 創(chuàng)建的 )

    p.__proto__.p.__proto__這個會報錯,因為p.__proto__中沒有名為p的屬性

    function Foo() {}
    p=new Foo;
    console.log(p.__proto__);
    因為沒有改變Foo.prototype 的屬性,所以仍然指向它自己(Foo)
    而 p.__proto__ 就是 Foo.prototype 所有輸出Foo{} 表示一個空的Foo對象。

 


查看完整回答
反對 回復 2022-01-04
  • 1 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號