call和apply
call 和 apply 是用来改变this指向的
call和apply都可以理解为是函数自身的方法
第一个参数代表了 接下来this所代表的对象
call和apply的区别
使用call方法来传参 一个一个的传参
使用apply方法来传参 需要传一个数组 数组里面的第一个就对应了f函数里面的
第一个参数,数组里面的第二个就对应了f函数里面的
第二个参数
console.log( f.call(obj1,'bmw','tangc')
console.log( f.apply(obj1,['bmw','tangc']) )
构造函数绑定实现继承
在子类的内部调用父类的方法
通过call()或apply()方法
组合继承
也叫伪经典继承
将原型链继承和构造函数继承组合在一块
原型链实现对原型属性和方法的继承
借用构造函数实现对实例属性的继承
原型属性和方法 */
// Person.prototype.weight = '70kg';
// Person.prototype.eat = function(){
// console.log('我会吃饭');
// }
// function Student(){
// /* 借用构造函数实现对实例属性的继承 */
// Person.call(this)
// }
// /* 原型链实现对原型属性和方法的继承 */
// Student.prototype = new Person()
// Student.prototype.contructor = Student;
// let stu1 = new Student();
// console.log(stu1);
// console.log(stu1.weight);
// stu1.eat();
拷贝继承
把父对象的所有属性和方法,拷贝进子对象
将父对象的prototype对象中的属性,拷贝给Child对象的prototype对象
父类 */
// function Person(){}
// Person.prototype.head = 1;
// Person.prototype.foot = 2;
// Person.prototype.eat = function (){
// document.write('我会吃饭');
// }
// // console.log(Person.prototype);
// /* 子类 */
// function Student(){}
// // console.log(Student.prototype);
// // for(let key in Person.prototype){
// // Student.prototype[key] = Person.prototype[key]
// // }