アカウント名:
パスワード:
だいたい以下のような方法があるようだ(自分がすぐ思いついたのは最初の2つだけだった)・toStringをオーバーライドする・getterを定義する・3つのaの前後に不可視(だけど識別子としては合法)な文字を付けて別の変数にする・valueOfをオーバーライドする・[Symbol.toPrimitive]をオーバーライドする
ちゃんと考えてないけどProxyでもできそう
一番すごいと思ったのはこれvar a = [1,2,3];a.join = a.shift;解説すると、1. aを数値と比較するために==演算子の作用によってtoStringが呼ばれる。2. 配列のtoStringは、デフォルトで配列の文字列表現を得るためにjoinを呼ぶ。3. joinがshiftでオーバーライドされているので、先頭から要素が1つずつ取り出されていく。
aをどこのスコープに置くかもバリエーションがあったけど、個人的に window.a を生やすのがツボった。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds
リンク先を見るのが面倒な人へ (スコア:5, 参考になる)
だいたい以下のような方法があるようだ(自分がすぐ思いついたのは最初の2つだけだった)
・toStringをオーバーライドする
・getterを定義する
・3つのaの前後に不可視(だけど識別子としては合法)な文字を付けて別の変数にする
・valueOfをオーバーライドする
・[Symbol.toPrimitive]をオーバーライドする
ちゃんと考えてないけどProxyでもできそう
一番すごいと思ったのはこれ
var a = [1,2,3];
a.join = a.shift;
解説すると、
1. aを数値と比較するために==演算子の作用によってtoStringが呼ばれる。
2. 配列のtoStringは、デフォルトで配列の文字列表現を得るためにjoinを呼ぶ。
3. joinがshiftでオーバーライドされているので、先頭から要素が1つずつ取り出されていく。
Re:リンク先を見るのが面倒な人へ (スコア:2)
aをどこのスコープに置くかもバリエーションがあったけど、
個人的に window.a を生やすのがツボった。