-
17424c6b :Anonymous
2013-07-26 17:53
-
JavaScriptでは
セッターはオブジェクトの[[Set]]内部プロパティ、
関数コールもオブジェクトの[[Call]]内部プロパティ、
他にもdeleteなどの演算子から、内部的に使われるものまで
ほぼほぼ全て、オブジェクトの特殊なプロパティとして定義されているけど
それを、無駄にビルドイン関数や演算子増やすこと無く
JS的に扱えるようにする仕組みがsymbolの本質なんだと思う
例えば
obj = {
data : [1, 2, 3, 4, 5]
}
があって、for-ofでdataの中身を列挙させたい場合は、
まあこの場合だとfor(v of obj.data)とすればいいんだけど、
仮にfor(v of obj)の形でしたい場合
import {iter} from '@iter'; //typeof iter === 'symbol'
obj[iter] = () => {
var data = this.data, i = 0
return {
next() { return i < data.length ? {value: data[i++]} : {done: true} }
}
}
みたいな雰囲気でできるってことだと思う
で、sym = Symbol()はそうだね、高速化があったか
Powered by shinGETsu.