typeof & instanceof & Object.prototype.toString


typeof

  1. typeof 給出的數(shù)據(jù)類型與js給出的存在差別:
    typeof:number / string / boolean / undefined / function / object,typeof 返回的數(shù)據(jù)的類型全是 string
    js:number / string / boolean / undefined / null / object
  2. typeof 的優(yōu)先級非常高,比加減乘除的優(yōu)先級都高,如下例所示:

typeof 2*3;//NaN
typeof (2*3);//"number"
typeof 2+3;// "number3"

instanceof

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 myArr     = [];
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)建非 Object 實例的對象的方法
myArr instanceof Array      // 返回 true
myArr instanceof Object     // 返回 true

myDate instanceof Date;     // 返回 true
myDate instanceof Object;   // 返回 true
  1. 除了對象和數(shù)組使用文字符號創(chuàng)建后,instanceof Object 仍然返回 true。,其余數(shù)據(jù)類型必須其 實例 是通過 new 關(guān)鍵字創(chuàng)建的,在 instanceof 該數(shù)據(jù)類型時才能返回 true
  2. 該方法的另一局限性是無法判斷該實例是不是對象,因為對于所有 new 方法創(chuàng)建出來的實例,Object.prototype都在其原型鏈上。當(dāng)然構(gòu)造函數(shù)的 prototype 可以改變,改變之后的值可能就不在實例的原型鏈上了

Object.prototype.toString

var toString = Object.prototype.toString;

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

toString.call(undefined); // [object Undefined]
toString.call(null); // [object null]
toString.apply([1,2,3]);  // [object Array]
toString.call({}); // [object object]
toString.call(123); // [object number]
toString.call('hello'); // [object string]

參考文獻(xiàn):
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/toString
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/instanceof

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容