のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,640,335人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレ+ JavaScript の質問用スレッド vol.120 +

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
901 : Name_Not - 2014/11/01(土) 19:32:31.73 ID:???.net (+3,-30,-18)
>>899
違う
君の目には "Object (non-standard exotic and does not implement [[Call]])" は写らないのか
それ以外の全ての文字が存在しうる
902 : Name_Not - 2014/11/01(土) 19:38:03.82 ID:???.net (+9,-30,-129)
(原文)
Implementation-defined. Must not be "undefined", "boolean", "function", "number", "symbol", or "string".

(和訳)
処理系定義。"undefined", "boolean", "function", "number", "symbol", "string" であってはならない。
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-typeof-operator
903 : Name_Not - 2014/11/01(土) 19:56:44.29 ID:???.net (+63,+29,-2)
一応書きますが>>899さんとは別人です
904 : Name_Not - 2014/11/01(土) 20:40:13.48 ID:???.net (-22,-29,-57)
たとえばtypeofでobjectと返って来たものは
objectとして扱うべきですが、
object以外の任意の文字が返って来た時、
objectとして扱うべきなのでしょうか?

これは例えばなので、functionであったとしても同じです。
functionと返ってこないものを
functionとして扱っていいのでしょうか?
905 : Name_Not - 2014/11/01(土) 21:06:50.38 ID:???.net (+39,-30,-241)
>>904
あなたのいう「objectとして」や「functionとして」がどのような意味で使っているのか、が分からないと返答しようがないのだが…

> object以外の任意の文字が返って来た時、objectとして扱うべきなのでしょうか?
「Object 型として扱うべき」という意味であれば "function" であっても "hoge" (>>902の事) であっても Object 型として扱うべき

> functionと返ってこないものをfunctionとして扱っていいのでしょうか?
ES6 には Function 型は存在しないし、あなたのいう function が何かを明示して欲しい
ES6 では [[Call]] を持つなら "function" を返さなければならない
ES3 なら "Object (host)" が [[Call]] を持つ事を許すので、それ以外の文字も存在しうるし、"object" 等の規定値であっても良い(古いIEの attachEvent や>>623はそれだろう)
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/11_Expressions.html#section-11.4.3
規定値を許す仕様は想定外のバグを生みかねないのでES5で修正されている
http://es5.github.io/#x11.4.3
読み返してみたら、>>641で似たような質問があるな
906 : Name_Not - 2014/11/01(土) 21:32:25.19 ID:???.net (+137,+29,-30)
>>905
互換性があるかどうかってこと。

言い換えると継承関係があるかどうかってことだよ。
907 : Name_Not - 2014/11/01(土) 21:38:09.78 ID:???.net (+104,+29,-10)
>>906
「型」と「継承」は何の関係もない
908 : Name_Not - 2014/11/01(土) 21:39:38.31 ID:???.net (+111,+29,-21)
>>907
じゃあ、互換性があるか。
同じように使えるかって話でいいよ。

いい加減に質問に答えてくれないか?
909 : Name_Not - 2014/11/01(土) 21:41:35.47 ID:???.net (+90,+29,-57)
「互換性」「継承関係」という言葉が曖昧すぎる
日本語だとそれぞれの認識に差が出るから、仕様内で使われている英語を使ってくれ
そうでないとまた泥沼議論になる
910 : Name_Not - 2014/11/01(土) 21:45:37.38 ID:???.net (+181,+29,-53)
>>909
また逃げるの? 俺は仕様内の言葉なんか知らないから
君が説明してくれよ。

「互換性がある」を仕様ではどのように言ってるのさ。
911 : Name_Not - 2014/11/01(土) 21:48:11.70 ID:???.net (+9,-29,-67)
typeofでfunctionが帰ってくるのなら、それはfunctionだし
返ってこないならそれはfunctionじゃない。

Callを持つかどうか?であれば、hasCallとかいうメソッドで
調べるべきで、typeofで調べるべきことではない。
912 : Name_Not - 2014/11/01(土) 21:51:20.84 ID:???.net (-1,-29,-17)
互換性があるかどうかは、instanceofで調べるんだよ。
913 : Name_Not - 2014/11/01(土) 21:52:21.58 ID:???.net (+52,+29,-2)
なんだまた荒しか
914 : 908 - 2014/11/01(土) 21:52:59.13 ID:???.net (+83,+30,-77)
>>910
俺は908が初レスなんでね。横槍ですまんな
「互換性がある」という日本語なんて仕様書にはない。終了

まあ煽りあってもしょうがないから聞くけどさ、>>910の言う「互換性」ってどういうこと?
英語でなくてもいいから、日本語でなるべく具体的に説明して
915 : 906 - 2014/11/01(土) 21:57:07.19 ID:vWviYiTO.net (+0,+29,-80)
多分、何か勘違いしてるんだろうが、質問内容が曖昧だからなあ
何と何に互換性があるのか、さっぱりわからんし、答えようがない

蛇足だけど、>>909は俺じゃない
>>909はフォローしてくれただけだから攻撃しないでくれ
916 : Name_Not - 2014/11/01(土) 22:04:31.78 ID:???.net (+113,+29,-34)
> まあ煽りあってもしょうがないから聞くけどさ、>>910の言う「互換性」ってどういうこと?

全く同じように使えるってことだよ。

Objectを渡されると期待している所に
入れても大丈夫なもの。
917 : Name_Not - 2014/11/01(土) 22:05:34.45 ID:???.net (+38,-29,-55)
>>911
> Callを持つかどうか?であれば、hasCallとかいうメソッドで調べるべきで、typeofで調べるべきことではない。
横からすまないが、hasCall は ES6 規定のメソッドだろうか
検索したが見つけられなかったので、該当仕様URLを教えてくれると嬉しい
918 : 908 - 2014/11/01(土) 22:10:35.00 ID:???.net (+115,+29,-67)
>>916
あなたの言う「Object」とは? → 「互換性のあるもの」
あなたの言う「互換性のあるもの」とは? → 「Objectを渡されると期待している所に入れても大丈夫なもの」
循環定義になっているので、私には答えようがないです
919 : 906 - 2014/11/01(土) 22:14:06.02 ID:vWviYiTO.net (-6,+28,-37)
>>916
互換性という言葉は「AとBに互換性がある」のように使う
AとBにそれぞれ何が入る?
920 : Name_Not - 2014/11/01(土) 22:15:05.03 ID:???.net (+69,+29,-2)
>>917
自分で作るんだよ。
それぐらい作れやw
921 : Name_Not - 2014/11/01(土) 22:16:23.55 ID:???.net (+114,+30,-55)
>>918
循環定義じゃなくて、
同じことを違う言葉で説明しているだけだろ。

「互換性がある」という説明じゃ通じないんだから
「Objectを渡されると期待している所に入れても大丈夫なもの」 と
言い換えた。

誰も定義の話なんかしとらんよ。
日本語通じないのかなこの人。
922 : 908 - 2014/11/01(土) 22:19:48.80 ID:???.net (+83,+29,-71)
>>921
煽りは要らない
あなたの言う「Object」が何なのか、それが私には知る由がないので、質問に答えられない
もしそれが説明できないなら、ES6仕様書での「4.3.3 object」の定義で回答するが、それでいいか?
923 : Name_Not - 2014/11/01(土) 22:20:58.89 ID:???.net (+12,-29,-37)
>>920
自作するなら仕様から [[Call]] を持つ事を保証しなければならない
「typeof は[[Call]] を調べるべきではない」⇒「自作しろ」では何の解決策にもなってないと思うが
typeof以外で [[Call]] の存在を判定可能なものが必要だろう
代替案なしの否定では何も進まない
926 : 908 - 2014/11/01(土) 22:28:49.64 ID:???.net (+34,-29,-43)
>>924
あなたの中ではそのいう定義なんですね。ES6と全く違う定義なので、私にはわからなかったです
あなたのその定義で言えば、typeof で "object" を返す保証はありません
obj instanceof Object で調べればいいです。終わり
927 : Name_Not - 2014/11/01(土) 22:31:13.33 ID:???.net (+99,+29,-26)
>>926
質問に答えてないしw

じゃあ君が定義を理解した所で

typeofでobjectと返ってこないものを
Objectと判断していいのか?

これが最初の質問だからね。最初の質問に戻しただけ。
928 : Name_Not - 2014/11/01(土) 22:33:29.62 ID:???.net (+76,+29,-52)
>>927
ああ、これに関しては悪かったw質問に答えてなかったね
「typeofでobjectと返ってこないものをObjectと判断していいのか?」
→ あなたの定義の「Object」である場合もあるし、そうでない場合もある
終わり
930 : Name_Not - 2014/11/01(土) 22:37:37.16 ID:???.net (+36,+13,-1)
またはじまったよw
931 : Name_Not - 2014/11/01(土) 22:38:50.45 ID:???.net (+81,-30,-82)
答え

> たとえばtypeofでobjectと返って来たものは
> objectとして扱うべきですが、
> object以外の任意の文字が返って来た時、
> objectとして扱うべきなのでしょうか?
objectとして扱ってはいけません。

> これは例えばなので、functionであったとしても同じです。
> functionと返ってこないものを
> functionとして扱っていいのでしょうか?

functionと返ってこないのであれば、
functionではありません。
932 : Name_Not - 2014/11/01(土) 22:42:38.31 ID:???.net (+57,+29,-32)
ああ、そういうことか
「"object" を返すものだけが真のobjectである」という説に落ち着けたかったのね
実際には「Objectのインスタンスではない」というだけなんだけど
933 : Name_Not - 2014/11/01(土) 22:47:00.02 ID:???.net (+64,+29,-8)
>>931
どこかで見覚えがある論法だと思ったら>>550だった
相変わらず、適当すぎる答えだ
934 : Name_Not - 2014/11/01(土) 22:53:51.67 ID:???.net (+7,-30,-72)
正確にはこうだな

■typeof演算子で "object" を返す場合
・Object型です
・Objectのインスタンスである事は保証されません

■typeof演算子で "function" を返す場合
・Object型で [[Call]] を持ちます
・Functionのインスタンスである事は保証されません

「型」と [[Call]] と [[Class]] を混同する人はそれなりに多い
935 : Name_Not - 2014/11/01(土) 23:00:22.41 ID:???.net (+90,+28,-33)
上のほうで、typeofでその他が返って来た時が
どうのこうのって言っていた奴いたじゃん?
あれ何が言いたかったんだろうね。

Objectであればinstanceofで調べられるわけで。
936 : Name_Not - 2014/11/01(土) 23:35:47.83 ID:???.net (+71,+29,-38)
>>935
ツリー化すればわかるが、それは互換性云々の人
屁理屈をこねて>>931の結論に持って行きたかっただけだと思う
937 : Name_Not - 2014/11/02(日) 00:23:51.74 ID:???.net (+5,-29,-7)
>>934
話題とは関係ないけど、typeof null == "object" も忘れないでね
938 : Name_Not - 2014/11/02(日) 00:59:08.11 ID:???.net (+9,-30,-189)
>>937
すまん、うっかりしてた
>>931に倣うならこうなる(「functionでないもの」は意味不明すぎるので削除した)

■typeof演算子で "object" を返す場合
・Object型もしくはNull型です
・Object型であってもObjectのインスタンスである事は保証されません

■typeof演算子で "undefined", "boolean", "function", "number", "symbol", "string" 以外を返す場合
・処理系のObject型です
・ES3では [[Call]] を持つものもありますが、ES5, ES6 では [[Call]] を持ちません
・Objectのインスタンスである事は保証されません
・Functionのインスタンスである事は保証されません(※[[Call]] を持つ場合)

■typeof演算子で "function" を返す場合
・Object型で [[Call]] を持ちます
・Functionのインスタンスである事は保証されません
・ES5, ES6 では typeof 演算子で返す文字列の中で [[Call]] を持つ唯一のケースです
939 : Name_Not - 2014/11/02(日) 16:17:40.94 ID:???.net (+27,-9,-17)
javascriptの公式ロゴって無いんですか
940 : Name_Not - 2014/11/02(日) 17:28:09.44 ID:???.net (+21,-19,-17)
>>939
JavaScriptに公式はないので公式ロゴもない
あえてあげるならECMAか
941 : Name_Not - 2014/11/02(日) 20:26:36.84 ID:???.net (+12,-30,-162)
(function(global){
var obj = document.getElementById("test");
obj.addEventListener("click", aaaaaaaaa, false);
}(window));
のときは循環参照しないから最後にglobal = nullしなくてもよくて
(function(global){
global.addEventListener("click", aaaaaaaaa, false);
}(window));
のときだけ循環参照してメモリが食うからglobal = nullってしないといけないって認識でOKですか?
942 : 940 - 2014/11/02(日) 20:27:25.29 ID:???.net (+3,-30,-68)
(function(global){
window.addEventListener("click", aaaaaaaaa, false);
}(window));
っていうふうにglobalじゃなくてwindowを使えば循環参照でメモリを食わないって認識でもいいですか?
943 : Name_Not - 2014/11/02(日) 23:00:20.23 ID:???.net (+36,-26,-40)
>>941-942
aaaaaaaaa の関数定義がないので何ともいえないが、確認できる限りでは全てDOMとScriptで循環参照していない
944 : Name_Not - 2014/11/03(月) 01:09:10.52 ID:???.net (+3,-29,-79)
youtubeのチャンネル登録された動画をgetjsonで取得し、任意の数だけ表示させているのですが、非公開動画があるとその前の動画までしか表示してくれません。
どうすれば、非公開動画を飛ばせますか?
945 : Name_Not - 2014/11/03(月) 09:05:54.46 ID:???.net (+57,+29,-9)
例外処理すればいいだけじゃないの
ソースコードがないから何とも言えないけど
946 : Name_Not - 2014/11/03(月) 09:31:25.41 ID:???.net (+130,+29,-19)
>>943
このスレと過去スレを呼んだら循環参照するって書いてありました
947 : Name_Not - 2014/11/03(月) 10:20:01.51 ID:???.net (+70,+29,-36)
>>946
そして循環参照は何も問題にならないから
循環して良いとも書いてあったでしょう?
948 : Name_Not - 2014/11/03(月) 10:53:26.50 ID:???.net (+8,-19,-11)
まじで
ってことはglobal = nullって書かなくてもいいってことですか
949 : Name_Not - 2014/11/03(月) 11:09:59.20 ID:???.net (+0,-29,-38)
そもそも>>941のコードではaaaaaaaaa内からglobalへの参照がないので循環参照していない
仮に循環参照していても、サポート切れのXP以下でしか使えないIE6など気にする必要ない
950 : Name_Not - 2014/11/03(月) 11:22:22.66 ID:???.net (+75,+29,-14)
>>946
aaaaaaaaa が無名関数式のケースで循環参照する、といわれていただけだろう
あなたがちゃんと理解できていないだけ
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について