[過去ログ] + JavaScript の質問用スレッド vol.126 + [転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
16
(4): 2015/10/12(月)08:00 ID:??? AAS
FirefoxにあるObject.prototype.__noSuchMethod__相当のものを
GoogleChromeで実現する方法はないのでしょうか
17: 2015/10/12(月)08:05 ID:??? AAS
本スレはこちらです

+ JavaScript の質問用スレッド vol.126 + [転載禁止](c)2ch.net
2chスレ:hp
18
(2): 2015/10/12(月)09:49 ID:??? AAS
本スレはこちらだからここで回答して良いよ。

>>16
Object.prototype.__noSuchMethod__ は Firefox でも廃止されるし、ないんじゃないかな
外部リンク:developer.mozilla.org

詳しくは知らないけど、ES6 で全てのプロパティが呼び出されたときに走る機能があったような。
それを利用すれば擬似的に可能かも(曖昧な答えでごめんね)。
19
(1): 18 2015/10/12(月)09:59 ID:PmAOvkKS(1) AAS
>>16
思い出した。ES6 の Proxy だけど、Google Chrome だと実装されてないね。
外部リンク:developer.mozilla.org
外部リンク:www.ecma-international.org
外部リンク:kangax.github.io
20: 2015/10/12(月)10:17 ID:??? AAS
2 自分:Name_Not_Found[] 投稿日:2015/10/07(水) 11:55:20.42 ID:71WBOfKy [2/2]
すみません。重複スレでした。
ここは削除依頼済みです。

↓こちらへどうぞ

+ JavaScript の質問用スレッド vol.126 + [転載禁止](c)2ch.net
2chスレ:hp
21: 2015/10/12(月)10:23 ID:??? AAS
ここで合ってる

避難所のまま使わせたいからって何も知らない人を騙す形で誘導するのは悪質過ぎる
向こうで煽ってレス伸ばす手法といい毎回やることが変わらんな
22: 2015/10/12(月)10:39 ID:??? AAS
向こうは煽りだけでまともな回答がないな。
前方一致に String.prototype.includes を勧めるとか奇想天外な事を言い出したときにはもうダメだと思った。
23: 2015/10/12(月)10:45 ID:??? AAS
向こうの話なら向こうでやれよ
24
(1): 2015/10/12(月)16:27 ID:??? AAS
>>16
Proxyを使えば可
ただし今Chromeに入ってるProxyは古いタイプだからいろんな意味で使いづらい
まあもう何ヶ月か待ってきちんとしたProxyがシップされるまでは遠慮した方がいい
25
(3): 2015/10/12(月)16:53 ID:??? AAS
__noSuchMethod__を使うと、
obj.method == undefinedなのに、
obj.method() とすると関数を呼び出せる。
さすがにその性質はProxyでは真似できないよね?
26
(1): 2015/10/12(月)17:04 ID:??? AAS
できないね
27: 16 2015/10/12(月)22:19 ID:??? AAS
>>18-19 >>24-26
ありがとうございます
残念ですがもう使用不可能と考えてよさそうですね
28: 2015/10/13(火)06:34 ID:??? AAS
>>25
できる。
普通に取り回すオブジェクトを素ではなくProxyにラップされたものにするか、
どうしても後からオブジェクトにそのような機能を付与したい場合は
プロトタイプに一段プロキシを挟めばいい。
29: 2015/10/13(火)07:05 ID:??? AAS
できないね
30: 2015/10/13(火)07:20 ID:??? AAS
いや、できるよ。
前者ではProxyは元オブジェクト及びそのプロトタイプが呼びだされたメソッドを持っているか調べることができるから、
調べてあれば元オブジェクトに委譲し、なければ特定の動作をさせたり、それこそ元オブジェクトの
"__noSuchMethod__"メソッドを呼び出すということも出来る。
後者でも少し変わるが基本的に同じことだ。
31
(1): 2015/10/13(火)07:33 ID:??? AAS
>>25の言いたいことは、
obj.method のように単純なプロパティアクセスの式だと undefined を返すのに、
obj.method() のようにメソッド実行だと関数が実行できるということでしょ。

んで、Proxy を使うと当然だけど関数を実行するには typeof obj.method == "function" にならざるをえないから、その点は再現できないってことでしょ。
32
(1): 2015/10/13(火)07:45 ID:??? AAS
>>31
できる。
Proxyは[[Get]]と[[Call]]の呼び出しを分けて処理できるから。
前者ではundefinedを返し、後者で先ほど書いた処理をすればいい。
33: 2015/10/13(火)07:48 ID:??? AAS
△前者ではundefinedを返し、後者で先ほど書いた処理をすればいい。
○applyハンドラで先ほどの処理をして、getハンドラは作らないでおけばそうなる。
34: 2015/10/13(火)07:51 ID:??? AAS
>>32
いやそれだとobj()が実行できるだけでしょ。
一度コード書いてみればわかるぞ。
35: 2015/10/13(火)08:29 ID:??? AAS
すまない勘違いだった。
たしかにそれはできないね。
1-
あと 967 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.767s*