美文网首页
toString()、typeof()和instanceof

toString()、typeof()和instanceof

作者: zjh111 | 来源:发表于2018-04-10 16:35 被阅读0次

    toString()

    | 类型 | 行为描述 |
    | Array | 将 Array 的每个元素转换为字符串,并将它们依次连接起来,两个元素之间用英文逗号作为分隔符进行拼接。 |
    | Boolean | 如果布尔值是true,则返回"true"。否则返回"false"。 |
    | Date | 返回日期的文本表示。 |
    | Error | 返回一个包含相关错误信息的字符串。 |
    | Function | 返回如下格式的字符串,其中 functionname 是一个函数的名称,此函数的 toString 方法被调用: "function functionname() { [native code] }" |
    | Number | 返回数值的字符串表示。还可返回以指定进制表示的字符串,请参考Number.toString()。 |
    | String | 返回 String 对象的值。 |
    | Object(默认) | 返回"[object ObjectName]",其中 ObjectName 是对象类型的名称。 |
    | Symbol| 返回Symbol(内容)

    使用Object.prototype.toString.call(obj)时会返回"[object 首字母大写数据类型]"
    例如
    obj为Function时返回"[object Function]"
    obj为Symbol时返回"[object Symbol]"
    obj为Array时返回"[object Array]"
    obj为Date时返回"[object Date]"
    obj为Object时返回"[object Object]"

    typeof()

    类型 结果
    Undefined "undefined"
    Null "object"
    Boolean "boolean"
    Number "number"
    String "string"
    Symbol (ECMAScript 6 新增) "symbol"
    宿主对象(由JS环境提供) Implementation-dependent
    函数对象([[Call]] 在ECMA-262条款中实现了) "function"
    任何其他对象 "object" //array、正则等

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

    // 定义构造函数
    function C(){} 
    function D(){} 
    
    var o = new C();
    
    
    o instanceof C; // true,因为 Object.getPrototypeOf(o) === C.prototype
    
    
    o instanceof D; // false,因为 D.prototype不在o的原型链上
    
    o instanceof Object; // true,因为Object.prototype.isPrototypeOf(o)返回true
    C.prototype instanceof Object // true,同上
    
    C.prototype = {};
    var o2 = new C();
    
    o2 instanceof C; // true
    
    o instanceof C; // false,C.prototype指向了一个空对象,这个空对象不在o的原型链上.
    
    D.prototype = new C(); // 继承
    var o3 = new D();
    o3 instanceof D; // true
    o3 instanceof C; // true
    

    相关文章

      网友评论

          本文标题:toString()、typeof()和instanceof

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