JS “this”绑定和子类问题

https://img3.mukewang.com/5c4587430001c49d08000201.jpg

Car是父,Van是其子类

问题:

  1. Car.call(this,loc) 是把Car的执行环境放在this里吗?

2 .此时意味着Car中this 就是 是Van中的this指代的(Object.create(Van.prototype))?

如果是,为什么?

3.

讲师说 =Object.create() 是将括号内的对象 委托到 等式左边;但是它的返回值:一个具有指定的内部原型且包含指定的属性(如果有)的新对象 ,这种返回值怎么用来解释原型链?似乎仍然要占用空间


慕桂英4014372
浏览 422回答 1
1回答

拉莫斯之舞

首先,你这里还都是构造函数,还没有类。第一个问题,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。不过原型链本来就是以多个对象串联起来形成的,本来就是要占用空间的,不是很懂这个问题的重点。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript