美文网首页
组合继承(属性和方法)

组合继承(属性和方法)

作者: JSONYUAN | 来源:发表于2019-03-05 14:19 被阅读0次

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

</body>
</html>
<script>

/**
 *
 *      组合继承
 *          call            继承属性
 *          prototype       继承方法
 *
 * */

/* Person 构造函数 */
function Person(name, age) {
    this.name = name;
    this.age = age;
}

Person.prototype.sayHi = function () {
    console.log('我是' + this.name);
};

Person.prototype.sayAge = function () {
    console.log('我今年' + this.age);
};


// 学生对象和人对象其实有很多重复
// 所以我们考虑 <学生对象> 从 <人对象> 上<继承>过来一些基本的属性
function Student(name, age, classNo) {
    /*
     *    call (打电话)借用一下 Person 构造函数
     *       第一个参数:调用该函数的那个对象
     *       后面的参数:作为实参传过去
     **/
    Person.call(this, name, age);     // 借用构造函数只能借用属性
    this.classNo = classNo;
}

/* 改变1 →: 尽管是空对象,但是空对象也有原型,间接继承了原型的方法  */
// new Person()   实例化一个空对象,其实我们不是用空对象的属性,而是用了对象的原型
Student.prototype = new Person();
/* 改变2 →: 这行代码写不写都不影响继承,写了显得更专业,更规范  */
// 由于上一行代码把原型改变了,constructor 没了,所以我们人为再添加一个 constructor
Student.prototype.constructor = Student;

// console.log(Student.prototype);

var p1 = new Person('大树', 48);
var stu1 = new Student('小成', 18, 313);


// 后面给 Person 添加的方法,看看后面能不能调用
Person.prototype.say666 = function(){
    console.log(666);
};

console.log(p1);
console.log(stu1);
stu1.sayAge();

/*
*     Student 的原型方法继承自 Person
*         p1 能调用 say666,sayHi,sayAge
*         stu1 也能调用 say666,sayHi,sayAge
* */
p1.say666();
stu1.say666();

console.log(stu1 instanceof Student);   // true
console.log(stu1 instanceof Person);    // true
console.log(stu1 instanceof Object);    // true

</script>

相关文章

  • 原型与继承

    什么是继承? 继承父级的属性和方法和共享(原型链)的属性和方法 组合继承 通过原型链继承共享的方法和属性;通过构造...

  • js一些技巧.md

    js中的constructor和prototype 组合继承与寄生继承 组合继承 可以继承实例属性和方法,也可以继...

  • JavaScript进阶:组合式继承和寄生组合式继承

    1、组合式继承 组合继承了使用原型链实现对原型属性和方法的继承,同时配合使用构造函数继承实现对实例属性的继承。以免...

  • 组合继承(属性和方法)

    Title

  • js 面向对象编程(二):构造函数的继承

    组合继承 原理:使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。举例: 图解 弊端...

  • javascript继承之组合继承(三)

    组合继承也叫伪经典继承,也就是组合了原型链和借用构造函数实现思想:使用原型链实现对原型属性和方法的继承,通过借用构...

  • ES的类与继承

    ES5中的类与继承 构造函数继承,原型继承,组合式继承 静态方法,静态属性,实例方法,实例属性 ES6中的类与继承...

  • JS中类的继承封装和多态

    子类继承父类的属性和方法(原生继承,call继承,寄生组合继承,ES6中class类继承)原生继承:让子类的原型指...

  • Python面向对象编程

    类相关知识 对象相关知识 类属性增删改查 实例属性增删改查 对象与实例属性 静态属性 类方法 静态方法 组合 继承...

  • 关于继承

    继承的实现方法 属性拷贝 浅拷贝 深拷贝 原型继承 原型式继承 原型链继承 组合继承(深拷贝+优化后的原型式继承)...

网友评论

      本文标题:组合继承(属性和方法)

      本文链接:https://www.haomeiwen.com/subject/heonuqtx.html