我已經寫了一個類,試圖使用自定義類擴展本機Javascript Array
類,我們稱之爲MyClass
。這基本上是這樣的:正確地擴展一個數組,保留子類的實例
class MyClass extends Array
constructor: (obj) -> @push.apply @, obj
first: -> @slice 0, 1
實例化類是沒有問題的。在控制檯中運行:
var myInstance = new MyClass(["1", "2"])
> ["1", "2"]
myInstance instanceof MyClass
> true
myInstance instanceof Array
> true
作品已經被驗證。
的問題是,如果我運行:
myInstance.first()
> ["1"] // as expected
myInstance.first() instanceof MyClass
> false // not expected
myInstance.first() instanceof Array
> true
返回值不再MyClass的實例。
我也試過@__proto__.first = @first
在構造函數和first: -> @slice.call @, 0, 1
。但沒有成功。
爲什麼不myInstance.first() instanceof MyClass
返回true
?
我不認爲擴展數組將會正常工作(http://stackoverflow.com/q/3261587/479863),你爲什麼要這樣做? –
基本上這只是實驗性的,我想看看是否有可能。我不想污染'Array'類,而是想擴充我自己的類。 –