当需要继承一个原型方法,又不需要用到A构造函数内的属性时
如果使用B.prototype = A.prototype 会相当于引用同一个地址
如果修改B.prototype 会引起A.prototype 一起改变
使用一个缓冲构造器,赋予目标原型实例
/**
* 继承 prototype 不会继承构造器内容 && 只继承原型方法,不使用同一引用
*
* @param {Target, Origin} 目标, 继承自
*/
const inherit = (function () {
return function (Target, Origin) {
function Buffer() {}
Buffer.prototype = Origin.prototype;
let buffer = new Buffer();
Target.prototype = buffer;
Target.prototype.constructor = Target;
Target.prototype.super_class = Origin;
};
})();
function A(opt) {
this.name = opt.name;
}
A.prototype.log = function () {
console.log(`这是log!`);
};
function B() {}
inherit(B, A);
let b = new B();
console.log(b)
补充几个关于原型的语句