亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JS類型判斷

yvonne / 2826人閱讀

摘要:數據類型判斷有的時候需要判斷數據類型,應對各種復雜的邏輯判斷,先來個咱們最常用的。操作符返回一個字符串,并表示該變量的類型。運算符用于測試構造函數的屬性是否出現在對象的原型鏈中的任何位置通俗點說就是一個變量是否某個對象的實例。

JS數據類型判斷

有的時候需要判斷數據類型,應對各種復雜的邏輯判斷,先來個咱們最常用的。

1.typeof

typeof操作符返回一個字符串,并表示該變量的類型。

typeof oper / typeof (operand)
var testString = "adus",
    testArray = [],
    testBoolean = true,
    testNumber = 0,
    testObject = {},
    testNull = null,
    testUndefined = undefined
    
console.log(typeof testString);//string
console.log(typeof testArray);//object
console.log(typeof testBoolean);//boolean
console.log(typeof testNumber);//number
console.log(typeof testObjec);//object
console.log(typeof testNull);//object
console.log(typeof testUndefined);//undefined

當然不只有上面的這些基礎類型,還有下面這些:

Symbol (ECMAScript 6 新增)    "symbol"

宿主對象(由JS環(huán)境提供)    Implementation-dependent

函數對象([[Call]] 在ECMA-262條款中實現了)    "function"

咦?有點不對,為什么數組、null等都是object呢???請往下看

Function或者Array這些類型的實例的時候,其實都是基于Object實例進行的一種擴展。只是多了一些特有屬性。 

在 JavaScript 最初的實現中,JavaScript 中的值是由一個表示類型的標簽和實際數據值表示的。對象的類型標簽是 0。

由于 null 代表的是 空指針(大多數平臺下值為 0x00)。

因此,null的類型標簽也成為了 0,typeof null就錯誤的返回了"object"。(reference)

2.instanceof

instanceof運算符用于測試構造函數的prototype屬性是否出現在對象的原型鏈中的任何位置,通俗點說就是一個變量是否某個對象的實例。

object instanceof constructor

object 要檢測的對象 / constructor 構造函數

function fnc(){}
var newFnc = new fnc();
console.log(newFnc.__proto__ == fnc.prototype);//true
console.log( newFnc instanceof fnc ) //true


/*String對象和Date對象都屬于Object類型和一些特殊情況*/

var simpleStr = "This is a simple string"; 
var myString  = new String();
var newStr    = new String("String created with constructor");
var myDate    = new Date();
var myObj     = {};
var myNonObj  = Object.create(null);

simpleStr instanceof String; // 返回 false, 檢查原型鏈會找到 undefined
myString  instanceof String; // 返回 true
newStr    instanceof String; // 返回 true
myString  instanceof Object; // 返回 true

myObj instanceof Object;    // 返回 true, 盡管原型沒有定義
({})  instanceof Object;    // 返回 true, 同上
myNonObj instanceof Object; // 返回 false, 一種創(chuàng)建對象的方法,這種方法創(chuàng)建的對象不是Object的一個實例

myString instanceof Date; //返回 false

myDate instanceof Date;     // 返回 true
myDate instanceof Object;   // 返回 true
myDate instanceof String;   // 返回 false
3.Object.prototype.toString()

每個對象都有一個toString()方法,當該對象被表示為一個文本值時,或者一個對象以預期的字符串方式引用時自動調用。默認情況下,toString()方法被每個Object對象繼承。如果此方法在自定義對象中未被覆蓋,toString() 返回 "[object type]",其中type是對象的類型。

Function.prototype.call( thisArg ) / Function.prototype.apply( thisArg )

傳遞要檢查的對象作為第一個參數,稱為thisArg。

var toString = Object.prototype.toString;

toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]

//Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]

在合適的場景用恰當的方法,會很省心,也能保證代碼的簡潔、健壯。

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

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/102615.html

相關文章

  • 【underscore.js 源碼解讀】常用類型判斷以及一些有用的工具方法

    摘要:最近開始看源碼,并將源碼解讀放在了我的計劃中。今天就跟大家聊一聊中一些常用類型檢查方法,以及一些工具類的判斷方法。用是否含有屬性來判斷工具類判斷方法接下來看下一些常用的工具類判斷方法。 Why underscore 最近開始看 underscore.js 源碼,并將 underscore.js 源碼解讀 放在了我的 2016 計劃中。 閱讀一些著名框架類庫的源碼,就好像和一個個大師對話...

    tanglijun 評論0 收藏0
  • js筆記內容

    摘要:定義運算符用來判斷一個構造函數的屬性所指向的對象是否存在另外一個要檢測對象的原型鏈上,用于引用類型。但其實,實例的來自于構造函數的。 一、關于css 樣式優(yōu)先級: 行內樣式>id選擇器樣式>類選擇器樣式>標簽選擇器樣式>通配符選擇器的樣式>繼承樣式>默認樣式 二、關于js 關于問題:**JavaScript中的所有事物都是對象??** 從typeof和instanceo...

    n7then 評論0 收藏0
  • Js基礎知識(一) - 變量

    摘要:內置函數和對象中內置了一些函數和對象,很多語言都會有內置的方法,直接可以調用開發(fā)。根據語法標準提供的內置函數包括和。注意基礎語法提供的內置函數和方法只有這些,像那是瀏覽器提供給我們的。強制類型轉換大家應該都知道。 js基礎 - 變量 *大家對js一定不會陌生,入門很簡單(普通入門),很多人通過網絡資源、書籍、課堂等很多途徑學習js,但是有些js基礎的只是往往被大家遺漏,本章就從js變量...

    leone 評論0 收藏0
  • Js基礎知識(一) - 變量

    摘要:內置函數和對象中內置了一些函數和對象,很多語言都會有內置的方法,直接可以調用開發(fā)。根據語法標準提供的內置函數包括和。注意基礎語法提供的內置函數和方法只有這些,像那是瀏覽器提供給我們的。強制類型轉換大家應該都知道。 js基礎 - 變量 *大家對js一定不會陌生,入門很簡單(普通入門),很多人通過網絡資源、書籍、課堂等很多途徑學習js,但是有些js基礎的只是往往被大家遺漏,本章就從js變量...

    MageekChiu 評論0 收藏0
  • js

    摘要:所以我們又可以得出一個結論原型的屬性指向構造函數,構造函數又通過屬性指回原型,但是并不是所有函數都具有這個屬性,就沒有這個屬性。 1.原始類型 boolean number string null undefined symbol原始類型儲存的都是值,是沒有函數可以調用的,undefined.toString() 顯示報錯,但是1.toString() // 1 ; 是因為1被強制轉...

    pubdreamcc 評論0 收藏0

發(fā)表評論

0條評論

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