我正在閱讀kangax的博客How ECMAScript 5 still does not allow to subclass an array。在這裏,他是用子類的不同的方法比正常的原型構建通過clone()的對象繼承的這種實現是如何工作的?
BaseClass.prototype = new Superclass();
他所做的事是這樣的:
function clone(obj) {
function F() { }
F.prototype = obj;
return new F();
}
,然後建立繼承這樣的:
function Child() { }
Child.prototype = clone(Parent.prototype);
有人可以解釋這種繼承的兩部分方法,它有什麼好處給出了上面簡單的單線程方法?
編輯:我從意見中瞭解到,現在有一個標準Object.create()
,基本上解決了與clone()
方法相同的目的,但clone()
這個實現如何工作?
因爲'new Superclass()'可能會觸發不希望的副作用,'clone'會給你一個繼承父對象的對象,但不必調用構造函數。 ,現在有一個JavaScript的標準方法來做到這一點,它是'Object'。create()' –
你的例子中的'clone'函數與Object.create'具有相同的用途,這就是爲什麼鏈接問題的答案會(希望)對你有幫助的原因。 –
@CrazyTrain如果'new Superclass()'被調用,會發生什麼* sideeffects *? – Geek