如题,下面是一个继承函数(子类可继承父类的属性及方法),但是不懂工作原理,求解,求科普,求链接。
var extend = function(child, parent) {
for (var key in parent) {
if (hasProp.call(parent, key)) child[key] = parent[key];
}
function ctor() {
this.constructor = child;
}
ctor.prototype = parent.prototype;
child.prototype = new ctor();
child.__super__ = parent.prototype;
return child;
},
hasProp = {}.hasOwnProperty;
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
阮一峰的网络日志 Javascript继承机制的设计思想
以下是我关于js继承思考的结果及一个实例demo,附上一点总结。
基础:
js对象都有一个原型 prototype 对象
object.prototype和原型对象的一个引用 constructor (是一个创建原型对象的实例方法的对象引用),即构造函数。原型对象对属性及方法可以被引用
js继承基本思路:
构造一个空的对象
function o(){}将对象 o 的原型引用指向 父对象的原型,对象o 获取了父对象原型的引用。
将对象 o 的构造函数指向子对象(表示使用子对象的构造方法来初始化对象o),并将子对象的原型对象指向 对象 o,实现了对父对象的原型引用,并且可以实现子对象自己的原型方法。
以下还使用了__super__来保留了对父类的原型对象引用,实现了重载父类原型方法。