原型链继承
function Person() {
this.arr = [1, 2, 3];
}
function Sub() {}
Sub.prototype = new Person();
const sub1 = new Sub();
const sub2 = new Sub();
sub1.arr.push(4);
console.log("sub1", sub1.arr);
console.log("sub2", sub2.arr);
构造函数继承
function Person() {
this.arr = [1, 2, 3];
}
Person.prototype.say = function () {
console.log("say!!!");
};
function Sub() {
Person.call(this);
}
const sub1 = new Sub();
const sub2 = new Sub();
sub1.arr.push(4);
console.log(sub1.arr);
console.log(sub2.arr);
sub1.say();
sub2.say();
组合继承
function Person() {
this.arr = [1, 2, 3];
}
Person.prototype.say = function () {
console.log("say!!!");
};
function Sub() {
Person.call(this);
}
Sub.prototype = new Person();
const sub1 = new Sub();
const sub2 = new Sub();
sub1.arr.push(4);
console.log(sub1.arr);
console.log(sub2.arr);
sub1.say();
sub2.say();
寄生组合继承
function Person() {
this.arr = [1, 2, 3];
}
Person.prototype.say = function () {
console.log("say!!!");
};
function Sub() {
Person.call(this);
}
Sub.prototype = Object.create(Person.prototype);
const sub1 = new Sub();
const sub2 = new Sub();
sub1.arr.push(4);
console.log(sub1.arr);
console.log(sub2.arr);
sub1.say();
sub2.say();