大家好!今天让小编来大家介绍下关于js问题test.cll(dog)难道不等同于dog.test吗的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

文章目录列表:

js问题test.cll(dog)难道不等同于dog.test吗 第1张

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吗的问题希望对你有用!

收藏(0)