javascript:function::['alert'](1) は何故動く?
解答は↓の様だが...
http://nanto.asablo.jp/blog/2007/04/22/1459018
とりあえず、"function"という特殊な名前空間があるらしいことは分かった
Yosuke HASEGAWA
@hasegawayosuke
javascript:function::['alert'](1) // これすごいな。http://sla.ckers.org/forum/read.php?24,28641,35101#msg-35101
2010-07-21 09:48:27
テラマコ
@teramako
javascript:(function(ns){ns::alert(1) })(new Namespace("@mozilla.org/js/function")) も動く
2010-07-25 02:27:58
小倉唯
@Constellation
たしかにtracemonkeyのsrcに該当行あるね. 4495行. function::ExpressionでExpressionが評価される. しかしこのE4Xがどこを根拠にしているのかさっぱりわからない.
2010-07-25 02:32:20
小倉唯
@Constellation
XML_SUPPORTが有効なときにしか有効にならないのだからほぼ確実にE4Xの機能なんだけれど. jsparse.cpp
2010-07-25 02:35:22
MARUYAMA Tsukasa
@mal_blue
@Constellation @teramako http://nanto.asablo.jp/blog/2007/04/22/1459018 眠い…
2010-07-25 02:40:31
テラマコ
@teramako
こういうことか! (function(x) [[typeof x.appendChild, x.appendChild], [typeof x.function::appendChild, x.function::appendChild]])(<x/>)
2010-07-25 03:21:38
テラマコ
@teramako
var x=<x/> に対して x.appendChild はメソッドとして使えるけど、functionオブジェクトを取ることができない。</>が返ってきてしまう。 x.function::appendChild なら取れる
2010-07-25 03:26:29