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

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

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

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


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

-Advertisement-
Play Games
更多相關文章
  • 看了知乎上的話題 如何才能通俗易懂的解釋javascript裡面的‘閉包’?,受到一些啟發,因此結合實例將回答中幾個精要的答案做一個簡單的分析以便加深理解。 1. "閉包就是跨作用域訪問變數。" 【示例一】 在 getName 函數中獲取 name,首先在 getName 函數的作用域中查找 nam ...
  • 前面,跟大家簡單地介紹了負載均衡和Nginx的一些基礎配置( "Nginx負載均衡配置實例" ),接下來,跟大家介紹一下Nginx的常用命令,便於日常的運維。 "查看原文" 停止Nginx的方法 通過之前的學習,大家知道瞭如何配置並啟動Nginx,但如果想停止Nginx服務,該如何操作呢?下麵介紹停 ...
  • npm multer 文件上傳 Express app 範本就不寫了,僅記錄一下上傳部分的代碼。 const fs = require('fs'); const express = require('express'); const multer = require('multer'); const ...
  • webpack 插件 ProvidePlugin:自動載入模塊,而不必到處 import 或 require 。 ...
  • 一.a標簽完成 二.js實現下載 三.js中ajax實現音頻或者視頻不跳轉進行文件下載 寫代碼的思路 四.fetch實現 ...
  • 參考自網站:https://segmentfault.com/a/1190000011779959 插件安裝完成之後,還要對一些插件進行配置,例如: vetur預設配置, 配置的過程: 打開 文件 > 首選項 > 用戶設置(U) > 點擊右上角 打開設置(json) // 執行文字相關的導航或操作時 ...
  • 本資源是我在源代碼網站上發現的,內附幾十種背景動態特效,我單獨提取出來精品背景特效在此分享,文件里有20多種精品動態效果,本人覺得可用作於個人博客主頁背景,登陸頁面背景等,有20多個背景特效,非常漂亮。 附文件下載地址: https://github.com/chengpu2/web2 ...
  • 文件/大文件上傳功能實現(JS+PHP) 參考博文:掘金-橙紅年代 前端大文件上傳 路漫漫 其修遠 PHP + JS 實現大文件分割上傳 本文是學習文件上傳後的學習總結文章,從無到有實現文件上傳功能,前端小白寫的代碼不是最優,如果有錯誤的地方請多多指教,如果本文對你有所幫助,深感榮幸。 近期公司的項 ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...