1、继承原理
function Person () {
this.p1 = true
}
Person.prototype.getP1 = function () {
return this.p1
}
function Person2() {
this.p2 = false
}
//让 一个原型对象 等于 另一个类的实例 ----继承
//这个原型对象 就包含了一个 指向另一个类的指针
//Person2.prototype 包含了 new Person() _proto_ 的指针,指向 Person的原型对象
// Person2 的实例 就继承了 Person
Person2.prototype = new Person()
Person2.prototype.getP2 = function() {
return this.p2
}
//拥有了 Person的属性和原型上的方法
var instace = new Person2()
console.log(instace.getP1())
// 继承 实际是重写原型对象
也就是说,继承实际是重写原型对象,将一个 原型对象(a) 等于 一个类的实例(b),这个 原型对象(a),就拥有了 一个(b)指针,指向 b的原型对象,因此 a的构造函数的实例,就拥有了b类的属性和方法
常见 new 过程
构造函数 一个 new 过程,做了哪些操作
var obj = Object.beget(this.prototype)
1、创建了一个对象(继承自构造函数的对象)
var other = this.apply(that,arguments)
2、绑定 this 到新对象上
return other || that
3、返回该对象(如果返回不是对象,就返回新的对象)