美文网首页
typeof & instanceof & Object.pro

typeof & instanceof & Object.pro

作者: 王瓷锤 | 来源:发表于2019-12-07 21:25 被阅读0次

typeof

  1. typeof 给出的数据类型与js给出的存在差别:
    typeof:number / string / boolean / undefined / function / object,typeof 返回的数据的类型全是 string
    js:number / string / boolean / undefined / null / object
  2. typeof 的优先级非常高,比加减乘除的优先级都高,如下例所示:

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, 一种创建非 Object 实例的对象的方法
myArr instanceof Array      // 返回 true
myArr instanceof Object     // 返回 true

myDate instanceof Date;     // 返回 true
myDate instanceof Object;   // 返回 true
  1. 除了对象和数组使用文字符号创建后,instanceof Object 仍然返回 true。,其余数据类型必须其 实例 是通过 new 关键字创建的,在 instanceof 该数据类型时才能返回 true
  2. 该方法的另一局限性是无法判断该实例是不是对象,因为对于所有 new 方法创建出来的实例,Object.prototype都在其原型链上。当然构造函数的 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]

参考文献:
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

相关文章

网友评论

      本文标题:typeof & instanceof & Object.pro

      本文链接:https://www.haomeiwen.com/subject/uhtugctx.html