アカウント名:
パスワード:
だいたい以下のような方法があるようだ(自分がすぐ思いついたのは最初の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のように見えてaじゃない文字(а、a)を変数名に使ったフィッシング詐欺的なのはあった。
#どうせUnicode限定なんだろって?違います。なんとどちらもShift-JISに含まれているのです!(笑)
・getterを定義する・3つのaの前後に不可視(だけど識別子としては合法)な文字を付けて別の変数にする
この2つは、暗黙的な型変換ではないと思います。// 別の変数にするパターンでは、 a(半角)とa(全角)とа(キリル文字)にするのもあがっていました。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日々是ハック也 -- あるハードコアバイナリアン
リンク先を見るのが面倒な人へ (スコア: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:リンク先を見るのが面倒な人へ (スコア:1)
これを含めてオブジェクトからの暗黙的な型変換利用してるのしかないよね
もっと変態的なのできないのだろうか
Re:リンク先を見るのが面倒な人へ (スコア:2)
変態的ではないけど、
aのように見えてaじゃない文字(а、a)を変数名に使ったフィッシング詐欺的なのはあった。
#どうせUnicode限定なんだろって?違います。なんとどちらもShift-JISに含まれているのです!(笑)
Re:リンク先を見るのが面倒な人へ (スコア:2)
・getterを定義する
・3つのaの前後に不可視(だけど識別子としては合法)な文字を付けて別の変数にする
この2つは、暗黙的な型変換ではないと思います。
// 別の変数にするパターンでは、 a(半角)とa(全角)とа(キリル文字)にするのもあがっていました。
svn-init() {
svnadmin create .svnrepo
svn checkout file://$PWD/.svnrepo .
}