JavaScript 构造函数继承的几种方式
程序员文章站
2024-03-26 11:15:41
...
1. 构造函数的属性继承——借用构造函数
function Person (name, age) {
this.type = 'human'
this.name = name
this.age = age
}
function Student (name, age) {
// 借用构造函数继承属性成员
Person.call(this, name, age)
}
var s1 = new Student('张三', 18)
console.log(s1.type, s1.name, s1.age) // => human 张三 18
通过构造函数call调用,实现构造函数属性的继承
缺点:无法继承来自原型的属性和方法
2. 构造函数的原型方法继承——拷贝继承(for-in)
function Person (name, age) {
this.type = 'human'
this.name = name
this.age = age
}
Person.prototype.sayName = function () {
console.log('hello ' + this.name)
}
// 构造函数内的属性还是通过call调用继承
function Student (name, age) {
Person.call(this, name, age)
}
// 原型对象拷贝继承原型对象成员
for(var key in Person.prototype) {
Student.prototype[key] = Person.prototype[key]
}
var s1 = new Student('张三', 18)
s1.sayName() // => hello 张三
3. 原型继承
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) {
Person.call(this, name, age)
}
// 利用原型的特性实现继承
Student.prototype = new Person()
var s1 = new Student('张三', 18)
console.log(s1.type) // => human
s1.sayName() // => hello 张三
推荐阅读
-
JavaScript 构造函数继承的几种方式
-
【java】构造函数的继承执行顺序 博客分类: java知识总结 java
-
用object( )方法实现非构造函数的继承 博客分类: JavaScript基础 JavaScript基础
-
用object( )方法实现非构造函数的继承 博客分类: JavaScript基础 JavaScript基础
-
多重继承的构造函数和析构函数的执行顺序(包含虚基类)
-
js实现页面跳转的几种方式 博客分类: javascript JavaScript页面跳转
-
java Person,Student,GoodStudent 三个类的继承、构造函数的执行
-
JavaScript中的构造函数的内部原理
-
javascript - 关于js的继承方式,求解!
-
php构造函数的继承方法