关于 call() 的问题

图片描述

图片描述

为什么我这样写,会报错说 call() 里面的 point,没有定义??但是后来我在里面写了个var 来定义,结果还是报错 :
图片描述

阅读 2.7k
4 个回答

我天,你这里问题很多啊。。我一个一个给你解释哈

一. 首先先不说别的

User.call(this, name, point);

某种角度相当于:

User(name, point);

只不过是把执行User时上下文环境替换成了当前上下文环境

二. 你这Company里,name尚且可以在函数显式声明的参数列表中找到,但是point并没有声明,所以运行到这里找不到point所以报错很正常。

三. 我猜你想写的其实是,this.namethis.point,所以你并不需要在User参数列表中写name(当然,也不需要写point),你既然通过call的方式调用的,运行时UserCompany是同一个this,所以User中自然也能取到Company中的this.namethis.point
e.g.:

function A(hehe, lala) {
  console.log(this.abc);  // 123
  console.log(this.def);  // 456
  console.log(hehe);  // '呵呵'
  console.log(lala);  // undefined
}
function B() {
  this.abc = 123;
  this.def = 456;
  var temp = '呵呵';
  A.call(this, temp);
}
new B();

四. 顺便说一句,var this.name是什么鬼??var是声明指针名的(即变量名,我习惯叫指针

你的问题很乱,所以我回答的也很乱。不过希望可以帮到你 :P

你执行User函数了吗

你找错行了,提示是说User.call(this,name,point)中的point没有定义

point不是USer 函数的参数 那个不能获取

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题