JS 實現繼承的幾種方式
在JavaScript中,實現繼承的幾種方式包括原型鏈繼承、構造函數繼承、組合繼承、原型式繼承、寄生式繼承和組合式繼承。
原型鏈繼承:
function Parent() {this.name = 'Parent';
}
Parent.prototype.sayHello = function() {console.log('Hello, I am ' + this.name);
};function Child() {}
Child.prototype = new Parent();var child = new Child();
child.sayHello(); // 輸出: Hello, I am Parent
構造函數繼承:
function Parent() {this.name = 'Parent';
}function Child() {Parent.call(this);
}var child = new Child();
console.log(child.name); // 輸出: Parent
組合繼承:
function Parent() {this.name = 'Parent';
}
Parent.prototype.sayHello = function() {console.log('Hello, I am ' + this.name);
};function Child() {Parent.call(this);
}
Child.prototype = new Parent();
Child.prototype.constructor = Child;var child = new Child();
child.sayHello(); // 輸出: Hello, I am Parent
原型式繼承:
function object(o) {function F() {}F.prototype = o;return new F();
}var parent = {name: 'Parent',sayHello: function() {console.log('Hello, I am ' + this.name);}
};var child = object(parent);
child.sayHello(); // 輸出: Hello, I am Parent
寄生式繼承:
function createAnother(original) {var clone = Object.create(original);clone.sayHello = function() {console.log('Hello, I am ' + this.name);};return clone;
}var parent = {name: 'Parent'
};var child = createAnother(parent);
child.sayHello(); // 輸出: Hello, I am Parent
組合式繼承:
function Parent(name) {this.name = name;
}
Parent.prototype.sayHello = function() {console.log('Hello, I am ' + this.name);
};function Child(name) {Parent.call(this, name);
}
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;var child = new Child('Child');
child.sayHello(); // 輸出: Hello, I am Child