問(wèn)題1:為什么是Object.prototyp不能直接arr.toString
console.log("arr.toString()", arr.toString());
const num = 123;
console.log("num.toString()", num.toString());
const fun = () => {
console.log("fun");
};
console.log("fun.toString()", fun.toString());
const obj = { name: "slx", age: 3434 };
console.log("obj.toString", obj.toString());
因?yàn)锳rray和Function等的toString方法都重寫(xiě)了,只有Object的沒(méi)有被重寫(xiě),所以只有Object.prototype才可以判斷數(shù)據(jù)類(lèi)型
問(wèn)題2:為什么后面要加call()
const arr = [1, 2, 3];
console.log(
" Object.prototype.toString(arr)",
Object.prototype.toString(arr)
);
console.log(
" Object.prototype.toString.call(arr)",
Object.prototype.toString.call(arr)
);
如果不加.call()的話,this指向?yàn)镺bject,Object的數(shù)據(jù)類(lèi)型自然是Object,所以不管判斷啥都是Object;
添加call之后,改變this指向arr.才能得到正確的類(lèi)型結(jié)果文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-854056.html
理論上使用apply也是可以的文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-854056.html
到了這里,關(guān)于Object.prototype.toString為什么要加.call的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!