JavaScript中如何通过构造函数实现继承?

更新于
2026-09-28 10:03:51
1阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计573个文字,预计阅读时间需要3分钟。

JavaScript中如何通过构造函数实现继承?

这篇文章主要介绍了JavaScript如何使用构造函数和继承来创建对象,通过示例代码展示了这一过程的非详细讲解。对于想要深入学习或工作的朋友,这具有一定的参考价值。以下是一个简单的示例:

javascriptfunction Person(name, age) { this.name=name; this.age=age;}

Person.prototype.sayHello=function() { console.log(Hello, my name is + this.name + and I am + this.age + years old.);}

function Student(name, age, grade) { Person.call(this, name, age); // 继承Person的属性 this.grade=grade;}

Student.prototype=new Person(); // 继承Person的方法Student.prototype.sayGrade=function() { console.log(I am in grade + this.grade);}

var student=new Student(Alice, 10, 5);student.sayHello(); // Hello, my name is Alice and I am 10 years old.student.sayGrade(); // I am in grade 5

这篇文章主要介绍了JavaScript如何借用构造函数继承,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

借用构造函数继承是在子类型构造函数的内部调用超类型构造函数,通过使用apply()和call()方法

function girlFriend(){ this.girls = ['chen','wang','zhu']; } function Person(){ girlFriend.call(this,20); } var wang = new Person(); var zhu = new Person(); wang.girls.push('zhang'); console.log(wang.girls); //(4) ["chen", "wang", "zhu", "zhang"] console.log(zhu.girls); //(3) ["chen", "wang", "zhu"]

通过以上代码,我们可以发现,在原型链继承中出现的问题不再出现了,这个超类不会被子类所创建的实例共享了。

借用构造函数继承的优势是可以在子类型构造函数中向超类型构造函数传递参数,例如以下代码:

function SuperType(name){ this.name = name; } function SubType(){ SuperType.call(this,"nick"); this.age = 20; } var instance = new SubType(); console.log(instance.name); //nick console.log(instance.age); //20

借用构造函数继承的问题:用构造函数继承并不能继承到超类型原型中定义的方法,例如以下代码,在girlFriends构造函数的原型中添加sayHello方法:

JavaScript中如何通过构造函数实现继承?

girlFriend.prototype.sayHello = function(){ console.log('hello'); }

继承它的子类构造函数的实例并不能调用到这个sayHello方法,返回的值是undefined

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计573个文字,预计阅读时间需要3分钟。

JavaScript中如何通过构造函数实现继承?

这篇文章主要介绍了JavaScript如何使用构造函数和继承来创建对象,通过示例代码展示了这一过程的非详细讲解。对于想要深入学习或工作的朋友,这具有一定的参考价值。以下是一个简单的示例:

javascriptfunction Person(name, age) { this.name=name; this.age=age;}

Person.prototype.sayHello=function() { console.log(Hello, my name is + this.name + and I am + this.age + years old.);}

function Student(name, age, grade) { Person.call(this, name, age); // 继承Person的属性 this.grade=grade;}

Student.prototype=new Person(); // 继承Person的方法Student.prototype.sayGrade=function() { console.log(I am in grade + this.grade);}

var student=new Student(Alice, 10, 5);student.sayHello(); // Hello, my name is Alice and I am 10 years old.student.sayGrade(); // I am in grade 5

这篇文章主要介绍了JavaScript如何借用构造函数继承,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

借用构造函数继承是在子类型构造函数的内部调用超类型构造函数,通过使用apply()和call()方法

function girlFriend(){ this.girls = ['chen','wang','zhu']; } function Person(){ girlFriend.call(this,20); } var wang = new Person(); var zhu = new Person(); wang.girls.push('zhang'); console.log(wang.girls); //(4) ["chen", "wang", "zhu", "zhang"] console.log(zhu.girls); //(3) ["chen", "wang", "zhu"]

通过以上代码,我们可以发现,在原型链继承中出现的问题不再出现了,这个超类不会被子类所创建的实例共享了。

借用构造函数继承的优势是可以在子类型构造函数中向超类型构造函数传递参数,例如以下代码:

function SuperType(name){ this.name = name; } function SubType(){ SuperType.call(this,"nick"); this.age = 20; } var instance = new SubType(); console.log(instance.name); //nick console.log(instance.age); //20

借用构造函数继承的问题:用构造函数继承并不能继承到超类型原型中定义的方法,例如以下代码,在girlFriends构造函数的原型中添加sayHello方法:

JavaScript中如何通过构造函数实现继承?

girlFriend.prototype.sayHello = function(){ console.log('hello'); }

继承它的子类构造函数的实例并不能调用到这个sayHello方法,返回的值是undefined

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。