我天,你这里问题很多啊。。我一个一个给你解释哈 一. 首先先不说别的 User.call(this, name, point); 从某种角度相当于: User(name, point); 只不过是把执行User时上下文环境替换成了当前的上下文环境 二. 你这Company里,name尚且可以在函数显式声明的参数列表中找到,但是point并没有声明,所以运行到这里找不到point所以报错很正常。 三. 我猜你想写的其实是,this.name和this.point,所以你并不需要在User参数列表中写name(当然,也不需要写point),你既然通过call的方式调用的,运行时User和Company是同一个this,所以User中自然也能取到Company中的this.name和this.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时
上下文环境
替换成了当前
的上下文环境
二. 你这
Company
里,name
尚且可以在函数显式
声明的参数列表
中找到,但是point
并没有声明,所以运行到这里找不到point
所以报错很正常。三. 我猜你想写的其实是,
this.name
和this.point
,所以你并不需要在User
参数列表中写name
(当然,也不需要写point
),你既然通过call
的方式调用的,运行时User
和Company
是同一个this
,所以User
中自然也能取到Company
中的this.name
和this.point
。e.g.:
四. 顺便说一句,
var this.name
是什么鬼??var
是声明指针名
的(即变量
名,我习惯叫指针
)你的问题很乱,所以我回答的也很乱。不过希望可以帮到你
:P