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

資訊專欄INFORMATION COLUMN

[ JS 基礎 ] JS 中 instanceof 運算符深入解析 (2)

劉厚水 / 2159人閱讀

摘要:在高級的技巧中會用來創建作用域安全的構造函數。運算符希望左操作數是一個對象,右操作數表示對象的類。中對象的類似通過初始化它們的構造函數來定義的。為了理解運算符是如何工作的,必須首先理解原型鏈原型鏈可作為的繼承機制。

  

在js高級的技巧中會用instanceof來創建作用域安全的構造函數。
instanceof運算符希望左操作數是一個對象,右操作數表示對象的類。如果左側的對象是右側類的實例,則表達式返回true;否側返回false。Javascript中對象的類似通過初始化它們的構造函數來定義的。這樣的話,instanceof的右操作數應當是一個函數。比如:

var d = new Date();    //通過計算Date()構造函數來創建一個新對象
d instanceof Date;     //計算結果為true,d是有Date()創建的
d instanceof Object;   //計算結果為true,所有對象都是Object的實例
d instanceof Number;   //計算結果為false,d不是一個Number對象
var a =[1,2,3];        //通過數組直接量的寫法創建一個數組
a instanceof Array;    //計算結果為true,a是一個數組
a instanceof Object;   //計算結果為true,所有數組都是對象
a instanceof RegExp;   //計算結果為false,數組不是一個正則表達式
  

需要注意的是,所有對象都是Object的實例。但通過instanceof判斷一個對象是否是一個類的實例的時候,這個判斷也會包含對“父類”的檢測。如果instanceof的左操作數不是一個對象的話,instanceof返回false,如果右操作數不是一個函數,則會拋出一個類型錯誤異常。

為了理解instanceof運算符是如何工作的,必須首先理解‘原型鏈’(protetype chain),原型鏈可作為Javascript的繼承機制。Ok,我們來看看表達式‘ person1 instanceof Personjavascript到底是怎么執行的。
首先,Person 會先計算Person .protetype,找到其指向的原型鏈中的所有對象,然后在這些對象中查找person1 ,如果找到,則說明person1Person 的一個實例,返回true,否側返回false。這其實就是判斷Person.prototypeperson1的內部指針[[prototype]]兩者引用是否相同。下圖展示了對象之間的關系:

以上是個人結合書本總結,若有不對,請指正。

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

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

相關文章

  • 從 ++[[]][+[]]+[+[]]==10? 深入淺出弱類型 JS 的隱式轉換

    摘要:與此相對,強類型語言的類型之間不一定有隱式轉換。三為什么是弱類型弱類型相對于強類型來說類型檢查更不嚴格,比如說允許變量類型的隱式轉換,允許強制類型轉換等等。在中,加性運算符有大量的特殊行為。 從++[[]][+[]]+[+[]]==10?深入淺出弱類型JS的隱式轉換 本文純屬原創? 如有雷同? 純屬抄襲? 不甚榮幸! 歡迎轉載! 原文收錄在【我的GitHub博客】,覺得本文寫的不算爛的...

    miya 評論0 收藏0
  • JS如何準確判斷數據類型

    摘要:對于此處的類型都是實例后的對象,并不會深入識別他們的構造函數這里不是數據類型。通過上面的判斷,我們知道它并不能滿足一些內置構造函數創建的偽類型。 在我的第一篇文章里,介紹過JS各大類型并使用typeof進行輸出查看.也有提到過每個函數都有一個自己的內部屬性[[class]],這個class指的是js內部分類.這個類的大致包括:數據類型和構造函數這兩種。 JavaScript類型介紹 ...

    KitorinZero 評論0 收藏0
  • 深入理解JavaScript

    摘要:深入之繼承的多種方式和優缺點深入系列第十五篇,講解各種繼承方式和優缺點。對于解釋型語言例如來說,通過詞法分析語法分析語法樹,就可以開始解釋執行了。 JavaScript深入之繼承的多種方式和優缺點 JavaScript深入系列第十五篇,講解JavaScript各種繼承方式和優缺點。 寫在前面 本文講解JavaScript各種繼承方式和優缺點。 但是注意: 這篇文章更像是筆記,哎,再讓我...

    myeveryheart 評論0 收藏0
  • JavaScript instanceof算符深入分析

    摘要:注意基本變量類型不是對象類型,只有基本包裝類型才是對象類型。至于顯示的原型,在里用屬性表示,這個是原型繼承的基礎知識,在這里就不在敘述了。 前言 如果你要開發一個復雜的產品,那么肯定少不了使用面向對象機制,當然也避不開 Javascript 里面的繼承,instanceof 運算符是原生 Javascript 語言中用來判斷實例繼承的操作符。所以我們有必要深入理解該運算符! inst...

    zhangyucha0 評論0 收藏0
  • 前端面試之路二(javaScript基礎整理)

    摘要:在標簽中添加屬性,本質上是跟在標簽里面寫屬性時一樣的,所以屬性值最終都會編譯為字符串類型。這個節點包括很多,比如,以及一些方法等方法。一個對象有很多,該集合名字為,里面有其他以及,里面有很多。 一、變量類型和計算 JS中使用typeof能得到哪些類型 變量類型 值類型:變量本身就是含有賦予給它的數值的,它的變量本身及保存的數據都存儲在棧的內存塊當中 引用類型:引用類型當然是分配到...

    AbnerMing 評論0 收藏0

發表評論

0條評論

劉厚水

|高級講師

TA的文章

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