互联网网站建设情况统计表,出国劳务信息,用html制作简易网页的教程,黑科技广告推广神器本篇文章主要说明在ES5中最通用最兼容的继承实现方式#xff0c;继承作为面向对象的三大特性之一#xff0c;在js中实现继承对代码的简洁性#xff0c;逻辑的连贯性都有很大的帮助。
实现思路
封装创建中间联系对象的函数 继承可以简单理解为建立子类和父类之间的联系继承作为面向对象的三大特性之一在js中实现继承对代码的简洁性逻辑的连贯性都有很大的帮助。
实现思路
封装创建中间联系对象的函数 继承可以简单理解为建立子类和父类之间的联系从而实现代码和函数的复用建立子类和父类的联系也就是建立两个构造函数之间的联系我们不难想到可以通过原型原型链来实现让子类与父类的原型建立联系就可以达到我们的目的。 如果我们直接将子类的prototype属性指向父类的原型的话就会导致继承很多我们并不需要的属性所以我们通过下图这种方式 将创建中间建立联系对象的代码封装成为一个函数传入的参数p为父类的原型对象将p赋值给F的原型并将其实例返回。
封装继承函数 接下来我们将createObj返回的实例对象赋值给子类的原型建立父类和子类的联系也就是继承关系实现代码如下图 封装成继承函数将子类和父类作为参数传入将子类的prototype指向createObj函数返回的实例对象并在子类原型中添加constructor属性指向子类的构造函数对象在需要继承的位置直接调用inherit函数就能完成继承。
完整代码
function Person(name, age) {this.name name;this.age age;
};Person.prototype.work function() {console.log(撸起袖子加油干)
}function Children(name, age, responsibility) {Person.call(this, name, age);this.responsibility responsibility;
};function createObj(p) {function F() {};F.prototype p;return new F()
}function inherit(Subtype, Supertype) {Subtype.prototype createObj(Supertype.prototype);Object.defineProperty(Subtype.prototype, constructor, {enumerable: false,configurable: true,writable: true,value: Subtype})
}inherit(Children, Person);Children.prototype.study function() {console.log(学习);
}var child new Children(guanju, 18, 成家立业);
console.log(child);
child.study();
child.work();