不能直接object.prototype.tostring(this);吗?
为什么object.prototype.tostring.call(this);这里也要用到call?不能直接object.prototype.tostring(this);吗?
为什么object.prototype.tostring.call(this);这里也要用到call?不能直接object.prototype.tostring(this);吗?
2017-04-26
写一下我的理解
toString()方法是没有参数的.
相当于
var o ={
toString : function(){
console.log("无论你传给我什么我都输出这行字.")
}
};
你用到函数toString()的时候,只能o.toString()
无论是o.toString('99999'),还是o.toString('88888'),对函数输出的结果 没有影响
所以Object.prototype.toString(this) , 这样写的话对输出结果是没有影响的, 就相当与Object本身在调用他自己的toString()方法
但是加上call()方法呢, Object.prototype.toString.call(this), 这实际相当于是用this对象来调用Object的toString()方法
那么怎么确定this的指向呢?
由于bar()函数同样没有参数 , 所以要用call()方法来传入this的值
如果你这样定义bar函数
function bar(a) {
console.log(Object.prototype.toString.call(a));
};
那在调用的时候就不需要bar.call()了,直接bar(56789)就行了
可能还有不对的地方, 能力有限啊
举报