js-高级03-面向对象的继承
如何实现继承 利用原型实现继承 即我们可以改变一个构造函数的prototype指向,来完成继承。 构造函数来实现 下面中就利用了call或者apply来改变this指向的方式来实现() 对象/函数.call(this,参数) 对象/函数.apply(this,[参数]) 拷贝实现 function Person (name, age) { this.type = 'human' this.name = name this.age = age } Person.prototype.sayName = function () { console.log('hello ' + this.name) } function Student (name, age) { //改变了自己的this的指向 Person.call(this, name, age) } // 原型对象拷贝继承原型对象成员 for(var key in Person.prototype) { Student.prototype[key] = Person.prototype[key] } var s1 = Student('张三', 18) s1.sayName() // => hello 张 函数内 this 指向的不同场景 函数的调用方式决定了 this 指向的不同: 调用方式 非严格模式 备注 普通函数调用 window 严格模式下是 undefined 构造函数调用 实例对象 原型方法中 this 也是实例对象 对象方法调用 该方法所属对象 紧挨着的对象 事件绑定方法 绑定事件对象 定时器函数 window