摘要:在高級的技巧中會用來創建作用域安全的構造函數。運算符希望左操作數是一個對象,右操作數表示對象的類。中對象的類似通過初始化它們的構造函數來定義的。為了理解運算符是如何工作的,必須首先理解原型鏈原型鏈可作為的繼承機制。
在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 Person ’ javascript到底是怎么執行的。
首先,Person 會先計算Person .protetype,找到其指向的原型鏈中的所有對象,然后在這些對象中查找person1 ,如果找到,則說明person1是Person 的一個實例,返回true,否側返回false。這其實就是判斷Person.prototype與person1的內部指針[[prototype]]兩者引用是否相同。下圖展示了對象之間的關系:
以上是個人結合書本總結,若有不對,請指正。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85571.html
摘要:與此相對,強類型語言的類型之間不一定有隱式轉換。三為什么是弱類型弱類型相對于強類型來說類型檢查更不嚴格,比如說允許變量類型的隱式轉換,允許強制類型轉換等等。在中,加性運算符有大量的特殊行為。 從++[[]][+[]]+[+[]]==10?深入淺出弱類型JS的隱式轉換 本文純屬原創? 如有雷同? 純屬抄襲? 不甚榮幸! 歡迎轉載! 原文收錄在【我的GitHub博客】,覺得本文寫的不算爛的...
摘要:對于此處的類型都是實例后的對象,并不會深入識別他們的構造函數這里不是數據類型。通過上面的判斷,我們知道它并不能滿足一些內置構造函數創建的偽類型。 在我的第一篇文章里,介紹過JS各大類型并使用typeof進行輸出查看.也有提到過每個函數都有一個自己的內部屬性[[class]],這個class指的是js內部分類.這個類的大致包括:數據類型和構造函數這兩種。 JavaScript類型介紹 ...
摘要:深入之繼承的多種方式和優缺點深入系列第十五篇,講解各種繼承方式和優缺點。對于解釋型語言例如來說,通過詞法分析語法分析語法樹,就可以開始解釋執行了。 JavaScript深入之繼承的多種方式和優缺點 JavaScript深入系列第十五篇,講解JavaScript各種繼承方式和優缺點。 寫在前面 本文講解JavaScript各種繼承方式和優缺點。 但是注意: 這篇文章更像是筆記,哎,再讓我...
摘要:注意基本變量類型不是對象類型,只有基本包裝類型才是對象類型。至于顯示的原型,在里用屬性表示,這個是原型繼承的基礎知識,在這里就不在敘述了。 前言 如果你要開發一個復雜的產品,那么肯定少不了使用面向對象機制,當然也避不開 Javascript 里面的繼承,instanceof 運算符是原生 Javascript 語言中用來判斷實例繼承的操作符。所以我們有必要深入理解該運算符! inst...
摘要:在標簽中添加屬性,本質上是跟在標簽里面寫屬性時一樣的,所以屬性值最終都會編譯為字符串類型。這個節點包括很多,比如,以及一些方法等方法。一個對象有很多,該集合名字為,里面有其他以及,里面有很多。 一、變量類型和計算 JS中使用typeof能得到哪些類型 變量類型 值類型:變量本身就是含有賦予給它的數值的,它的變量本身及保存的數據都存儲在棧的內存塊當中 引用類型:引用類型當然是分配到...
閱讀 633·2021-11-24 09:39
閱讀 3478·2019-08-30 15:53
閱讀 2509·2019-08-30 15:44
閱讀 3237·2019-08-30 12:54
閱讀 2206·2019-08-29 12:23
閱讀 3304·2019-08-26 14:05
閱讀 2101·2019-08-26 13:36
閱讀 3429·2019-08-26 13:33