var __extends = function (e, t) {
function r() {
this.constructor = e
}
for (var n in t)
if (t.hasOwnProperty(n))
e[n] = t[n];
r.prototype = t.prototype;
e.prototype = new r
};
我理解的是把t中的属性都拷贝到e当中,不知道是否有误?
为什么要声明一个r并且把他的构造函数指向e?
在实际业务中能起到什么作用?
只是JS中原型链继承的一种方式
传入2个参数一个参数 e为原函数对象,t为将要继承的函数对象
定义一个内部函数r,将其原型对象的的构造函数指向e,说通过new r创建的实例对象的构造函数为e,怪吧~~~下面会用到
上面代码的作用那个是将t的自有属性(非原型对象属性)复制到e
将r的原型对象指向t的原型对象,此时t的原型对象的constructor属性作为t的原型对象的constructor
将e的原型指向通过new r创建的实例对象,此时e的constructor属性就是r函数中 ‘’‘this.constructor = e’‘’ 指定的e函数对象,将在
r.prototype = t.prototype;
设置的constructor属性变更指向e函数对象了同时e能够访问到t原型中的方法及t非原型对象的属性
整个_extends函数的核心就是通过r函数作为媒介,将e和t关联起来
例子