美文网首页
用 Object.prototype.toString.call

用 Object.prototype.toString.call

作者: Johnson23 | 来源:发表于2019-07-30 14:51 被阅读0次

    来自MDN中的描述,如下:
    每个对象都有一个toString()方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString()方法被每个Object对象继承。如果此方法在自定义对象中未被覆盖,toString() 返回 "[object type]",其中type是对象的类型。以下代码说明了这一点:

    • toString() 方法返回一个表示该对象的字符串。
    • 默认情况下,toString()方法被每个Object对象继承。如果此方法在自定义对象中未被覆盖,toString() 返回 "[object type]",其中type是对象的类型。
    var o = new Object();
    o.toString(); // returns [object Object]
    
    const arr = [1,2,3]
    console.log(Array.prototype.hasOwnProperty('toString')) //true
    console.log(arr.toString()) // 1,2,3
    delete Array.prototype.toString
    console.log(Array.prototype.hasOwnProperty('toString')) //false
    console.log(arr.toString()) // [object Array]
    
    • Array自定义了toString方法,按照原型链规则,arr.toString()调用的是Array.prototype.toString方法,而不是Object.prototype.toString方法。
    • 可以通过call方法,将this指向Object.prototype.toString。
    const arr = [1,2,3]
    Object.prototype.toString.call(arr) // [object Array]
    console.log(Object.prototype.toString.call(arr).slice(8, -1) === 'Array') // true
    

    相关文章

      网友评论

          本文标题:用 Object.prototype.toString.call

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