2013-12-19 106 views
0

由於js是真正靈活的語言,我總是想知道是否可以創建自定義數據類型。最後我決定嘗試創建一個。我不是在談論簡單的課程,而是在談論更像js本地人的東西。我將創建範圍數據類型。數學範圍例如(2.5; 9)或(-Infinity; 5)。還支持範圍的總和(2; 7)u(9; 27)。它允許輕鬆地創建迭代器,例如2-8,步長爲0.25。倒是喜歡它支持正常的js語法如,對於...在,或length屬性calculeted基礎上步財產。javascript - 自定義數據類型 - 我需要什麼/我應該瞭解什麼

可悲的是我已經注意到,_ 迭代 _僅支持在FF,但仍它應該有可能是因爲其他的屬性不可枚舉準備迭代

我知道:

-Object.create /的DefineProperties
-getters/setter方法
次使用嚴格的(以最大限度地提高性能)
- _ 迭代 _(實際上不支持)

還有什麼可能是有用的?

Atm。我會這樣做:

我會在本地範圍內創建一些隱藏的變量,以便在每次更改步驟和存儲範圍後預先計算迭代器。使用戶完全看不見。除了步驟之外,所有屬性都不可枚舉 - 這些屬性將添加迭代器重新計算。就這麼簡單的範圍[2; 7]第2步會是什麼樣子:

local scope: 
ranges:[[2;7]] // more arrays if it'd be sum 
iterator:[2,4,6] 
//other internal variables 

not enumerable: 
array: // returns copy of iterator using getter 
//some other useful properties 

enumerable: 
0:2 
1:4 
2:6 

這是好主意,或者有其他更合適的方式來做到這一點?是否有可能讓這個班級使用+ - 等運算符?

回答

1

在JavaScript(編5),一個

  • 不能創建自定義語法語法或文字的形式;
  • 無法超負荷運營商

然而,許多 「自定義數據類型」 已創建;隨時創造另一個。例如,jQuery(操作DOM元素的序列),moment.js(一個Date替換)和big.js(一個帶有操作的「大數」類型)都是「自定義數據類型」 - 儘管方法替代爲運算符

否則,不確定問題的其餘部分在哪裏..除非關閉。