国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從Array到Null

ccj659 / 504人閱讀

摘要:問題等方法前面不寫定義一個數組,并打印確實沒有等方法問題既然是由構造函數構造的實例,為什么沒有繼承的方法靜態方法只能通過類構造函數本身調用不能通過實例調用定義靜態方法我是方法我是方法之前定義靜態方法我是方法實例報錯再回頭看問題方法的調用方式

Array

問題1:isArray、from、of等方法前面不寫prototype?
let a1 = [1, 2, 3]
console.dir(a1)
// 定義一個數組a1,并打印a1
// 確實沒有isArray等方法

問題2:a1既然是由構造函數Array()構造的實例,為什么沒有繼承Array的方法?
// 靜態方法
// 只能通過 類/構造函數 本身調用
// 不能通過 實例 調用
class Array1 {
  static isArray() {  // ES6定義靜態方法
    console.log("我是isArray方法")
  }
  map() {
    console.log("我是map方法")
  }
}
Array1.forEach = function() {  // ES6之前定義靜態方法
  console.log("我是forEach方法")
}
let a1 = new Array1()
console.log("實例a1", a1)
// a1.isArray()
// 報錯: a1.isArray is not a function

再回頭看 問題1
// 方法的調用方式
let a2 = [1, 2, 3]
a2.push(4)
Array.isArray(a2)

// 構造函數prototype 里的方法會被繼承到實例里面
// Array的prototype 里的方法會被繼承到實例a2里面
a2.__proto__ === Array.prototype
a2.__proto__.constructor === Array

// 1、構造函數為Array
// 2、原型對象為Array.prototype, 所有由Array生成的實例都會繼承里面的方法
// 3、a2.__proto__ 指向原型對象
// 4、a2._proto__.constructor指向構造函數
Null
a2.__proto__.constructor // ? Array() { [native code] }
a2.__proto__.constructor === Array
// a2的構造函數為Array

Array.__proto__.constructor // ? Function() { [native code] }
Array.__proto__.constructor === Function
// Array的構造函數為Function

Function.__proto__.constructor // ? Function() { [native code] }
Function.__proto__.constructor === Function
// Function的構造函數為Function

Function.prototype.__proto__.constructor
Function.prototype.__proto__.constructor === Object
// ? Object() { [native code] }
// Function

Object.prototype.__proto__.constructor 
// Cannot read property "constructor" of null
Object.prototype.__proto__ === null

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/110051.html

相關文章

  • 讀lodash源碼之slice看稀疏數組與密集數組

    摘要:例如其中的為,但是數組中沒有元素,是稀疏數組而每個位置都是有元素的,雖然每個元素都為,為密集數組。那稀疏數組和密集數組有什么區別呢在中最主要考慮的是兩者在迭代器中的表現。截取并返回新數組為新數組容器。 卑鄙是卑鄙者的通行證,高尚是高尚者的墓志銘。 ——北島《回答》 看北島就是從這兩句詩開始的,高尚者已死,只剩卑鄙者在世間橫行。 本文為讀 lodash 源碼的第一篇,后續文章會更新到...

    lijy91 評論0 收藏0
  • Laravel 管道流原理

    摘要:管道流原理強烈依賴函數,我們先來了解下函數的使用。第二次迭代時,的值為上述返回的閉包偽代碼,的值為,返回一個閉包,當我們執行這個閉包時,滿足,得到結果。自定義中間件為的管道流核心類在的方法中,為上述的閉包,為要通過的中間件數組,為對象。 Laravel管道流原理強烈依賴array_reduce函數,我們先來了解下array_reduce函數的使用。 原標題PHP 內置函數 array_...

    Mr_zhang 評論0 收藏0
  • 簡單總結一下JS的Array對象

    摘要:簡單總結一下的對象屬性數組指定創建一個數組的函數。方法數組返回一個迭代器,它返回數組的鍵值對。方法數組返回滿足回調函數中指定的測試條件的第一個數組元素的索引值。該回調函數的返回值為累積結果,并且此返回值在下一次調用該回調函數時作為參數提供。 簡單總結一下JS的Array對象 constructor 屬性(數組) 指定創建一個數組的函數。該屬性可用于判斷某個對象是否為數組與arr ins...

    malakashi 評論0 收藏0
  • es6常用數組操作及技巧匯總

    摘要:檢測數組或者檢測對象的原型鏈是否指向構造函數的對象或者終極大招注意不可以用此方法檢查常用方法合并多個數組,返回合并后的新數組,原數組沒有變化。返回值是由被刪除的元素組成的一個數組。 定義數組 const array = [1, 2, 3]; 或者 const array = new Array(); array[0] = 1; 建議盡量使用第一種形式定義數組,采用new的形式在大量的數...

    Noodles 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<