zoukankan      html  css  js  c++  java
  • typeof和valueof、instance of 之间的区别

    1、typeof

    // typeof 返回的是类型的字符串值
    typeof undefined === 'undefined' // true
    typeof true === 'boolean' // true
    typeof 42 === 'number' // true
    typeof "42" === "string" // true
    typeof { life : 42 } === "object" // true
    
    
    // 特殊的类型
    typeof null === "object" // true
    // 需要用复合条件去检测null
    var a = null;
    (!a && typeof a === "object"); // true
    typeof function a(){/** */} === "function"; // true
     

    2、valueOf()函数用于返回指定对象的原始值。

    该方法属于Object对象,由于所有的对象都"继承"了Object的对象实例,因此几乎所有的实例对象都可以使用该方法。

    所有主流浏览器均支持该函数。

    var array = ["CodePlayer", true, 12, -5];
    document.writeln( array.valueOf() === array ); // true

    3、instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。

    var a=new Array();
    
    alert(a instanceof Array); // true
    另外,更重的一点是 instanceof 可以在继承关系中用来判断一个实例是否属于它的父类型。
    
    例如:
    
    function Foo(){} 
    Foo.prototype = new Aoo();//JavaScript 原型继承 
    var foo = new Foo(); 
    console.log(foo instanceof Foo)//true 
    console.log(foo instanceof Aoo)//true
    
    上面的代码中是判断了一层继承关系中的父类,在多层继承关系中,instanceof 运算符同样适用。
    
    
    又如:
    
    console.log(Object instanceof Object);//true 
    console.log(Function instanceof Function);//true console.log(Number instanceof Number);//false 
    console.log(String instanceof String);//false  
    console.log(Function instanceof Object);//true  
    console.log(Foo instanceof Function);//true 
    console.log(Foo instanceof Foo);//false
  • 相关阅读:
    //设N是一个四位数,它的9倍恰好是其反序数(例如:1234 的反序数是4321),求N的值。
    安装oracle后,电脑变卡变慢的解决办法
    JSONP
    vue-resource发起get、post、jsonp请求
    Vue实例的生命周期
    自定义全局指令让文本框获取焦点
    自定义全局按键修饰符
    es2017 提供的针对字符串填充的函数:padStart、padEnd
    自定义私有过滤器
    fiddler教程
  • 原文地址:https://www.cnblogs.com/Roxxane/p/13805696.html
Copyright © 2011-2022 走看看