大家好!今天让小编来大家介绍下关于js问题test.cll(dog)难道不等同于dog.test吗的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
文章目录列表:
test函数内部的this对象就不再是dog,当执行 dog.test.call(另一个对象) 后,而是“另一个对象”,比如:var name = ’小白’;var obj = { name:’小红’, sayName:function(){ return this.name; }};var obj1 = { name:’小蓝’};console.log(obj.sayName()); //输出小红console.log(obj.sayName.call(this)); //输出小白console.log(obj.sayName.call(obj1)); //输出小蓝所以你从根本上就把call理解错了通俗来理解就是:obj.sayName.call(obj1) 这是强行让obj的亲儿子sayName认obj1为爹,本文目录js问题test.call(dog)难道不等同于dog.test吗js问题test.call(dog)难道不等同于dog.test吗你call的用法错了,也就是说,应该是 dog.test.call(另一个对象)call的作用是改变函数的作用域。
本文目录
js问题test.call(dog)难道不等同于dog.test吗
你call的用法错了,应该是 dog.test.call(另一个对象)
call的作用是改变函数的作用域,也就是说,当执行 dog.test.call(另一个对象) 后,test函数内部的this对象就不再是dog,而是“另一个对象”!
比如:
var name = ’小白’;var obj = { name:’小红’, sayName:function(){ return this.name; }};var obj1 = { name:’小蓝’};console.log(obj.sayName()); //输出小红console.log(obj.sayName.call(this)); //输出小白console.log(obj.sayName.call(obj1)); //输出小蓝
所以你从根本上就把call理解错了
通俗来理解就是:obj.sayName.call(obj1) 这是强行让obj的亲儿子sayName认obj1为爹!
以上就是小编对于js问题test.cll(dog)难道不等同于dog.test吗问题和相关问题的解答了,js问题test.cll(dog)难道不等同于dog.test吗的问题希望对你有用!