美文网首页
#总结#typeof和instaceof

#总结#typeof和instaceof

作者: a5c0a9d9ccb8 | 来源:发表于2016-10-20 11:42 被阅读51次

    基础知识:
    js六种数据类型:string,number,boolean,object,null,undefined
    JS的第七种基本类型Symbols

    区别:
    1、typeof 是一个一元运算。返回值是一个字符串,只能返回如下几个结果:string,number,boolean,function,object,undefined。
    数组、null、对象都返回object

    Paste_Image.png
    typeof Infinity === 'number';
    typeof NaN === 'number'; // 尽管NaN是"Not-A-Number"的缩写
    typeof Number(1) === 'number'; // 但不要使用这种形式!
    typeof (typeof 1) === 'string'; // typeof总是返回一个字符串
    typeof String("abc") === 'string'; // 但不要使用这种形式!
    
    typeof Symbol() === 'symbol';
    typeof Symbol('foo') === 'symbol';
    typeof Symbol.iterator === 'symbol';
    
    typeof function(){} === 'function';
    typeof Math.sin === 'function';
    

    2、instaceof运算符
    object instanceof constructor
    用来检测 constructor.prototype
    是否存在于参数 object
    的原型链上。它是一个二元运算符号,用于判断一个变量是否为某个对象的实例。

    var a=new Array();
    alert(a instanceof Array); // true
    alert(a instanceof Object) // true。因为 Array 是 object 的子类。
    function test(){};
    var a=new test();
    alert(a instanceof test) //true
    // instanceof 测试的 object 是指 js 语法中的 object,不是指 dom 模型对象。使用 typeof 会有些区别
    var a=new Array();
    alert(a instanceof Object);//true
    alert (window instanceof Object);//true
    alert(typeof(window));//object
    
    function C(){}
    function D(){}
    var o = new C();
    o instanceof C;//true
    o instanceof D;//false
    o instanceof Object;//true
    
    C.prototype = {};
    var o2 = new C();
    o instanceof C;//false。因为C.prototype指向了一个空对象,这个空对象不在o的原型链上.
    o2 instanceof C;//true
    

    -注!

    • 如果表达式 obj instanceof Foo返回true,则并不意味着该表达式会永远返回ture,因为Foo.prototype属性的值有可能会改变,改变之后的值很有可能不存在于obj的原型链上,这时原表达式的值就会成为false。
    • 原表达式的值也会改变,就是改变对象obj的原型链的情况,虽然在目前的ES规范中,我们只能读取对象的原型而不能改变它,但借助于非标准的proto魔法属性,是可以实现的。比如执行obj.proto = {}之后,obj instanceof Foo就会返回false了。

    参考:
    instanceof
    typeof

    相关文章

      网友评论

          本文标题:#总结#typeof和instaceof

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