- 为了解决下面链接的弊端:无法在new Student();设置name,age,say。
10.继承方式一
function Person(myName, myAge) {
// let per = new Object();
// let this = per;
// this = stu;
this.name = myName; // stu.name = myName;
this.age = myAge; // stu.age = myAge;
this.say = function () { // stu.say = function () {}
console.log(this.name, this.age);
}
// return this;
}
function Student(myName, myAge, myScore) {
// let stu = new Object();
// let this = stu;
Person.call(this, myName, myAge); // Person.call(stu);
this.score = myScore;
this.study = function () {
console.log("day day up");
}
// return this;
}
let stu = new Student("ww", 19, 99);
// stu.name = "zs";
// stu.age = 18;
// stu.score = 99;
console.log(stu.score);
stu.say();
stu.study();
- call作用就是将this传递过去,通过在别的函数用传递过去的this进行属性和方法的设置。
- 继承体现在stu拥有person的属性
- 构造函数+call实现继承
- 构造函数是工厂函数的缩写,缩写体现在注释部分
- Student具有Person的name,age属性了,通过call函数
还是有弊端:假如Person.prototype添加了新的方法,Student实例想用怎么办?没法呀
看下一篇
网友评论