Car是父,Van是其子类问题:Car.call(this,loc) 是把Car的执行环境放在this里吗?2 .此时意味着Car中this 就是 是Van中的this指代的(Object.create(Van.prototype))?如果是,为什么?3.讲师说 =Object.create() 是将括号内的对象 委托到 等式左边;但是它的返回值:一个具有指定的内部原型且包含指定的属性(如果有)的新对象 ,这种返回值怎么用来解释原型链?似乎仍然要占用空间
1 回答
拉莫斯之舞
TA贡献1820条经验 获得超10个赞
首先,你这里还都是构造函数,还没有类。
第一个问题,A.call(this,argu)是将this绑定到A的作用域,并且参数为argu,这里也就是把van作用域下的上下文带给了car。
第二个问题,van被作为构造函数时候的this才是指代的Object.create(Van.prototype),然后由于call的作用,其被传递到了car中。
第三个问题,Object.create()其实和new操作符,在以构造函数创建对象上作用是一致的。
var Car = function() {};
var carA = new Car();
var carB = Object.create(Car.prototype);
以上代码的两种实现其实是等价的,但是Object.create还可以直接以一个对象为参数传入,直接实现继承。
// 接上面
var carC = Object.create(carB);
此处carC的原型就是carB。
不过原型链本来就是以多个对象串联起来形成的,本来就是要占用空间的,不是很懂这个问题的重点。
添加回答
举报
0/150
提交
取消