typeof,instanceof的區別,擴展知識:顯示原型(prototype)與隱式類型(__protot__)

来源:https://www.cnblogs.com/crushxz/archive/2019/10/14/11670481.html

3.typeof 和instanceof區別 1.typeof 主要用於判斷對象類型 類型有: 1.object 2.function 3.number 4.string 5.boolean 6.undefined 7.symbol =>一種標識唯一性的ID 註意:每個symbol屬性都是唯一的,任 ...


3.typeof 和instanceof區別

1.typeof

主要用於判斷對象類型

console.log(typeof null)          //object
console.log(typeof undefined)     //undefined
console.log(typeof [1,2,3])       //object
console.log(typeof Boolean)       //function
console.log(typeof 1)             //number
console.log(typeof '1')           //string
console.log(typeof String)        //function
console.log(typeof boolean)       //undefined
console.log(typeof true)          //boolean
console.lig(typeof symbol)        //symbol
console.log(typeof Function)      //function

 

類型有:

1.object

2.function

3.number

4.string

5.boolean

6.undefined

7.symbol =>一種標識唯一性的ID

註意:每個symbol屬性都是唯一的,任意兩個symbol都不相等

2.instanceof

instanceof 運算符用於檢測構造函數的 prototype 屬性是否出現在某個實例對象的原型鏈上。

右邊必須為一個對象

console.log(typeof null)          //object
console.log(typeof undefined)     //undefined
console.log(typeof [1,2,3])       //object
console.log(typeof Boolean)       //function
console.log(typeof 1)             //number
console.log(typeof '1')           //string
console.log(typeof String)        //function
console.log(typeof boolean)       //undefined
console.log(typeof true)          //boolean
console.lig(typeof symbol)        //symbol
console.log(typeof Function)      //function

 

註意:每個函數的原型鏈上都有原型,再上面都有對象

1.顯示原型 : prototype

只要創建一個新的函數,就會為該函數創建一個prototype屬性.該屬性指向函數的原型對象.所有原型對象都會自動獲得一個constructor構造函數屬性,該屬性指向prototype屬性所在函數的指針.

2.隱式原型 : __proto__

隱式原型指向創建這個對象的函數的prototype.

object.peototype.__proto__ == null

 

註意:通過Function.prototype.bind方法構造出來的函數沒有prototype屬性。

3.顯示原型與隱式原型的區別和聯繫
function P(){}
let p1 = new P();
p1.__proto__ === P.prototype //true
P.prototype  //  {constructor: ƒ}
P.prototype.constructor === P //true
P.__proto__ === Function.prototype //true

 

1.對象只有__proto__屬性,這個屬性是指向他的構造函數的prototype屬性

function B(b){
    this.b = b;
}
var b = new B('seanxiao')
console.log(b)

 

b對象的屬性是__proto__,指向構造函數B的prototype,B.protptype.__proto__指向Object.prototype

Object.protptype.__protp__是null

而則一層一層的鏈接 關係就是原型鏈。


您的分享是我們最大的動力!

更多相關文章
  • Number 方法幫助您處理數值。 Number 方法和屬性 原始值(比如 3.14 或 2016),無法擁有屬性和方法(因為它們不是對象)。 但是通過 JavaScript,方法和屬性也可用於原始值,因為 JavaScript 在執行方法和屬性時將原始值視作對象。 Number 方法和屬性 原始值 ...
  • 一.安裝依賴 二.全局導入(必須先安裝依賴) 第一步 在 裡加入(新版的可能找不到這個文件,你可以 進行手動安裝) 第二步 在 的最後加入 第三步 在 引入 直接在 引入 三.單個vue組件導入(必須先安裝依賴) 然後在組件的script中 ...
  • 下表列出了所有jQuery 雜項方法: ...
  • @support:用於檢測瀏覽器是否支持CSS某個屬性,即條件判斷,如果支持某個屬性,可以寫一套樣式,如果不支持某屬性,提供另一套樣式作為替補。 calc():用於計算動態函數值,支持“+”,“-”,“*”,“/”運算 @media:針對不同的媒體類型定義不同的樣式 ...
  • 隊列是常用的數據結構之一,只允許在表的前端(隊頭)進行刪除操作(出隊),在表的後端(隊尾)進行插入操作(入隊)。特點是先進先出,最先插入的元素最先被刪除。 在jQuery內部,隊列模塊為動畫模塊提供基礎功能,負責存儲動畫函數、自動出隊並執行動畫函數,同時還要確保動畫函數的順序執行。 jQuery的靜 ...
一周排行
  • 場景 在Winfom中可以在頁面上多個按鈕或者右鍵的點擊事件中觸發同一個自定義的委托事件。 實現 在位置一按鈕點擊事件中觸發 string parentPath = System.IO.Directory.GetParent("指定路徑").ToString(); //獲取指定路徑的父級目錄並作為參 ...
  • asp.net 根據html模板導出excel public class ExcelHelper { /// <summary> /// 根據html模板文件生成excel文件 /// </summary> /// <param name="ds">數據源</param> /// <param na ...
  • asp.net 使用NPOI讀取excel文件內容 NPOI下載地址:NPOI public class ExcelHelper { /// <summary> /// 讀取Excel文件數據到DataSet,一個Sheet對應一個DataTable /// </summary> /// <para ...
  • 場景 使用Visual Studio 開發Winform程式,使用SVN進行項目版本管理。 在添加引用時,會出現在A電腦中添加了絕對路徑的引用,在B電腦中就會出現找不到 並且將此引用標識為?的狀態。 註: 博客主頁: https://blog.csdn.net/badao_liumang_qizhi ...
  • asp.net 使用 Application 限制單一登錄 原理:用戶登錄後系統會分配一個與用戶唯一對應的SessionID,將當前用戶ID與其SessionID對應保存在Application中,一旦該用戶在其他地方重覆登錄則Application中保存的SessionID就會被更新,導致當前se ...
  • 當我們的系統時間不正常,比如設置一個日期-1999年9月9日,會引發證書問題。 系統時間不正常-IE有概率能訪問 觸發NavigateError事件,異常代碼INET_E_INVALID_CERTIFICATE -- 這是一個必要不充分條件,系統時間不正常時IE有相關證書異常,更新時間能解決此類異常 ...
  • //加密 public static string GDEncode(string data, string Key) { Key = "12345678"; byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(Key); byte[] b ...
  • static void CopyFiles() { string sourceDir = @"D:\C\ll"; string destDir = @"D:\LL"; if (!Directory.Exists(destDir)) { Directo... ...
  • //接收的為空時,則表示客戶端下線,跳出迴圈 if (r == 0) { break; }; string str = Encoding.UTF8.GetString(buffer, 0, r); //RemoteEndPoint:可以得到遠程客戶端的IP和埠號。 ShowMsg(socketSe... ...
  • 本文梯子 前言 1、.net core 框架性能測試 2、.net core 執行過程 3、中間件執行過程 4、AOP切麵 5、整體框架結構與資料庫表UML 一、創建第一個Core 1、SDK 安裝 2、新建項目 2、新建項目(3.0SDK) 3、項目整體結構分析 二、重要文件說明 1、Progra ...
x