欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS之判斷是否為對象或數(shù)組的幾種方式總結(jié)

 更新時間:2023年04月19日 09:31:22   作者:前端@小菜  
這篇文章主要介紹了JS之判斷是否為對象或數(shù)組的幾種方式總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

JS判斷是否為對象或數(shù)組的幾種方式

判斷值是否是對象

1.toString 方式【常用】

Object.prototype.toString.call(val) === '[object Object]' // true 代表為對象

注意:這里要使用 call 方法改變作用域

2.constructor 方式

val?.constructor === Object // true 代表為對象

這里使用了 null 傳導符(?.) 以防止出錯

3.typeof 與 instanceof

typeof 與 instanceof 并不能完全判斷一個值為對象

typeof 的取值有:

  • "undefined"——如果這個值未定義;
  • "boolean"——如果這個值是布爾值;
  • "string"——如果這個值是字符串;
  • "number"——如果這個值是數(shù)值;
  • "object"——如果這個值是對象(包括數(shù)組)或null;
  • "function"——如果這個值是函數(shù);
  • "symbol"——如果這個值是Symbol

instanceof 操作符對于數(shù)組和對象都返回 true

[] instanceof Object // true
new Object instanceof Object // true

4.__proto__ 方式【不推薦】

 __proto__屬性,用來讀取或設置當前對象的 prototype 對象,此屬性未納入標準,不建議使用。

val.__proto__ === Object.prototype // true 代表為對象

5.Object.getPrototypeOf 方式

Object.getPrototypeOf(),用來讀取對象的 prototype 對象。

Object.getPrototypeOf(val) === Object.prototype // true 代表為對象

判斷值是否為數(shù)組

1.toString 方式

Object.prototype.toString.call(val) === '[object Array]' // true 代表為數(shù)組

注意:這里要用 Object 的 toString 方法,Array 的 toString 返回的是拼接的字符串

var colors = ['red', 'blue', 'green'];
console.log(colors.toString()); ?// red,blue,green

2.Array.isArray 方法【推薦】

ES5中提供了 isArray 方法用來判斷值是否為數(shù)組

Array.isArray(val) // true 代表為數(shù)組

3.instanceof 方式

val instanceof Array // true 代表為數(shù)組

為什么 instanceof 可以用來判斷數(shù)組而不可以判斷對象呢?因為數(shù)組本身就是一個類似于列表的高階對象。

4.constructor 方式

val?.constructor === Array // true 代表為數(shù)組

5. __proto__ 方式【不推薦】

val.__proto__ === Array.prototype // true 代表為數(shù)組

6.Object.getPrototypeOf 方式 

Object.getPrototypeOf(val) === Array.prototype // true 代表為數(shù)組

7.isPrototypeOf 方式

isPrototypeOf() 方法用于測試一個對象是否存在于另一個對象的原型鏈上。

Array.prototype.isPrototypeOf(val) // true 代表為數(shù)組

該方式不能用來判斷對象!

如何判斷一個對象是不是數(shù)組(例子解釋)

先上代碼

      let shuzu=[];
      shuzu.push(1,2,3,43);      //向數(shù)組里添加幾項
      console.log(shuzu);        //打印這個數(shù)組
      console.log(Array.isArray(shuzu));                  //方法1
      console.log(shuzu instanceof Array);                //方法2
      console.log(Array.prototype.isPrototypeOf(shuzu));  //方法3
      console.log(Object.prototype.toString.call(shuzu)); //方法4

結(jié)果:

在這里插入圖片描述

四種方法我簡稱方法1,方法2,方法3,方法4。

方法1:Array.isArray(…),這是JS已經(jīng)提供的判斷一個對象是不是數(shù)組的方法

方法2: … instanceof Array,instanceof是用來判斷引用類型的方法,而type則是用來判斷基本類型的方法,instanceof 運算符用來測試一個對象在其原型鏈中是否存在一個構(gòu)造函數(shù)的 prototype 屬性,返回一個布爾值。

方法3:Array.prototype.isPrototypeOf(…),利用isPrototypeOf()方法,判定Array是不是在obj的原型鏈中,如果是,則返回true,否則false。

方法4:Object.prototype.toString.call(…),根據(jù)對象的class屬性(類屬性),跨原型鏈調(diào)用toString()方法,在js中一個對象一旦被創(chuàng)建,在內(nèi)部會攜帶創(chuàng)建對象的類型名,js中提供了調(diào)用對象原型中的toString方法,也就是其中call可以這么理解,相當于對象去借用這個 Object.prototype.toString();

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • JavaScript實現(xiàn)計算圓周率到小數(shù)點后100位的方法示例

    JavaScript實現(xiàn)計算圓周率到小數(shù)點后100位的方法示例

    這篇文章主要介紹了JavaScript實現(xiàn)計算圓周率到小數(shù)點后100位的方法,簡單分析了圓周率計算的原理并結(jié)合實例形式給出了javascript計算圓周率的具體操作技巧,需要的朋友可以參考下
    2018-05-05
  • 微信小程序藍牙連接小票打印機實例代碼詳解

    微信小程序藍牙連接小票打印機實例代碼詳解

    這篇文章主要介紹了微信小程序藍牙連接小票打印機實例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • 使用JS取得焦點(focus)元素代碼

    使用JS取得焦點(focus)元素代碼

    這篇文章主要介紹了使用JS取得焦點(focus)元素的具體實現(xiàn),需要的朋友可以參考下
    2014-03-03
  • JavaScript字符串分割處理的方法總結(jié)

    JavaScript字符串分割處理的方法總結(jié)

    這篇文章主要介紹了JavaScript字符串分割處理的幾種方法,js截取重要的三要素substring()、subsstr()、slice(),下面文章圍繞這三要素展開全文,需要的小伙伴可以參考一下
    2022-03-03
  • JS實現(xiàn)同一個網(wǎng)頁布局滑動門和TAB選項卡實例

    JS實現(xiàn)同一個網(wǎng)頁布局滑動門和TAB選項卡實例

    這篇文章主要介紹了JS實現(xiàn)同一個網(wǎng)頁布局滑動門和TAB選項卡效果,通過簡單的自定義切換函數(shù)setTab實現(xiàn)頁面元素的遍歷及屬性切換的功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • JavaScript多圖片上傳案例

    JavaScript多圖片上傳案例

    JS上傳多圖片例子,為了更人性化,不要固定初始化時的個數(shù),可以通過由用戶決定上傳圖片的個數(shù),即是動態(tài)地創(chuàng)建上傳圖片文框和按鈕的個數(shù),感興趣的小伙伴們可以參考一下
    2015-09-09
  • javascript中的數(shù)字與字符串相加實例分析

    javascript中的數(shù)字與字符串相加實例分析

    javascript中的數(shù)字與字符串相加實例分析,學習js的朋友可以參考下。
    2011-08-08
  • BootStrap Table對前臺頁面表格的支持實例講解

    BootStrap Table對前臺頁面表格的支持實例講解

    bootstrap-table是在bootstrap的基礎上面做了一些封裝,所以在使用bootstrap-table之前要導入的js和css,下面通過本文給大家詳細介紹需要引入的文件,對bootstrap table 表格感興趣的朋友一起看看吧
    2016-12-12
  • 一文剖析JavaScript中閉包的難點

    一文剖析JavaScript中閉包的難點

    這篇文章主要為大家詳細介紹了JavaScript中閉包的一些難點,文中的示例代碼講解詳細,對我們學習JavaScript有一定幫助,需要的可以參考一下
    2022-09-09
  • JS中比較冷門但非常好用的方法總結(jié)

    JS中比較冷門但非常好用的方法總結(jié)

    在Js中有一些比較冷門但是非常好用的方法,我在這里稱之為高級方法,這些方法沒有被廣泛使用或多或少是因為存在一些兼容性的問題,不是所有的瀏覽器都讀得懂的,這篇文章主要就是對這些方法做一個總結(jié),讓我們一起來看一下吧
    2023-06-06

最新評論