我正試圖在JavaScript中實現特定的語法模式。本質上,要求是用新方法擴展原生JavaScript對象的原型,並將這些方法組織到名稱空間中。我正在尋找的結果可以總結爲:是否可以將對象原型的方法組織到名稱空間中?
String.prototype.foo = {
bar: function() { return this.toUpperCase(); } //Fails because "this" is foo, not it's parent string
};
'test'.foo.bar(); //should return 'TEST'
我知道有其他的方式來實現類似的結果,但我真的希望上面的語法是可能的 - 儘管我80%肯定它不是。
我已經嘗試過十幾種不同的構建方法,但是我找不到任何方式將內容作爲「this」添加到bar()中。我相信問題是,因爲foo是一個對象並且沒有可執行代碼,所以編譯器無法將所有者「this」傳遞給它並從那裏傳遞給子方法,但是我想知道是否有一些模糊存在我不知道的母鏈存在的技術?下一個最好的事情可能是'test'.foo()。bar(),我沒有嘗試過,但聽起來更有可能工作。
你爲什麼不嘗試呢?先試一試。 – 2014-03-01 00:54:06
[組織原型javascript,同時保持對象引用和繼承](http://stackoverflow.com/q/15884096/1048572) – Bergi