为了账号安全,请及时绑定邮箱和手机立即绑定

不能直接object.prototype.tostring(this);吗?

为什么object.prototype.tostring.call(this);这里也要用到call?不能直接object.prototype.tostring(this);吗?

正在回答

3 回答

写一下我的理解

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)就行了

可能还有不对的地方, 能力有限啊


1 回复 有任何疑惑可以回复我~

比如下面这段代码:

function bar(){

console.log(Object.prototype.toString.call(this));

console.log(this.toString());

}

bar.call(7);

老师的意思是想输出传给bar作为新的作用域的对象是哪种类型的,比如这里传给bar.call()的是7,这显然是一个number对象,答案自然是object number,如果去掉call直接写成Object.prototype.toString(this),这里的this我认为指向的是Object,所以答案应该是object object 这毫无意义

1 回复 有任何疑惑可以回复我~

多打了 一个tostring。。。手误

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

不能直接object.prototype.tostring(this);吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信