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

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

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    901 = :

    >>899
    違う
    君の目には "Object (non-standard exotic and does not implement [[Call]])" は写らないのか
    それ以外の全ての文字が存在しうる

    902 = :

    (原文)
    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 = :

    一応書きますが>>899さんとは別人です

    905 = :

    >>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 = :

    >>905
    互換性があるかどうかってこと。

    言い換えると継承関係があるかどうかってことだよ。

    907 = :

    >>906
    「型」と「継承」は何の関係もない

    908 = :

    >>907
    じゃあ、互換性があるか。
    同じように使えるかって話でいいよ。

    いい加減に質問に答えてくれないか?

    909 = :

    「互換性」「継承関係」という言葉が曖昧すぎる
    日本語だとそれぞれの認識に差が出るから、仕様内で使われている英語を使ってくれ
    そうでないとまた泥沼議論になる

    910 = :

    >>909
    また逃げるの? 俺は仕様内の言葉なんか知らないから
    君が説明してくれよ。

    「互換性がある」を仕様ではどのように言ってるのさ。

    911 = :

    typeofでfunctionが帰ってくるのなら、それはfunctionだし
    返ってこないならそれはfunctionじゃない。

    Callを持つかどうか?であれば、hasCallとかいうメソッドで
    調べるべきで、typeofで調べるべきことではない。

    913 = :

    なんだまた荒しか

    914 = :

    >>910
    俺は908が初レスなんでね。横槍ですまんな
    「互換性がある」という日本語なんて仕様書にはない。終了

    まあ煽りあってもしょうがないから聞くけどさ、>>910の言う「互換性」ってどういうこと?
    英語でなくてもいいから、日本語でなるべく具体的に説明して

    916 = :

    > まあ煽りあってもしょうがないから聞くけどさ、>>910の言う「互換性」ってどういうこと?

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

    Objectを渡されると期待している所に
    入れても大丈夫なもの。

    917 = :

    >>911
    > Callを持つかどうか?であれば、hasCallとかいうメソッドで調べるべきで、typeofで調べるべきことではない。
    横からすまないが、hasCall は ES6 規定のメソッドだろうか
    検索したが見つけられなかったので、該当仕様URLを教えてくれると嬉しい

    918 = :

    >>916
    あなたの言う「Object」とは? → 「互換性のあるもの」
    あなたの言う「互換性のあるもの」とは? → 「Objectを渡されると期待している所に入れても大丈夫なもの」
    循環定義になっているので、私には答えようがないです

    920 = :

    >>917
    自分で作るんだよ。
    それぐらい作れやw

    921 = :

    >>918
    循環定義じゃなくて、
    同じことを違う言葉で説明しているだけだろ。

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

    誰も定義の話なんかしとらんよ。
    日本語通じないのかなこの人。

    922 = :

    >>921
    煽りは要らない
    あなたの言う「Object」が何なのか、それが私には知る由がないので、質問に答えられない
    もしそれが説明できないなら、ES6仕様書での「4.3.3 object」の定義で回答するが、それでいいか?

    923 = :

    >>920
    自作するなら仕様から [[Call]] を持つ事を保証しなければならない
    「typeof は[[Call]] を調べるべきではない」⇒「自作しろ」では何の解決策にもなってないと思うが
    typeof以外で [[Call]] の存在を判定可能なものが必要だろう
    代替案なしの否定では何も進まない

    926 = :

    >>924
    あなたの中ではそのいう定義なんですね。ES6と全く違う定義なので、私にはわからなかったです
    あなたのその定義で言えば、typeof で "object" を返す保証はありません
    obj instanceof Object で調べればいいです。終わり

    927 = :

    >>926
    質問に答えてないしw

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

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

    これが最初の質問だからね。最初の質問に戻しただけ。

    928 = :

    >>927
    ああ、これに関しては悪かったw質問に答えてなかったね
    「typeofでobjectと返ってこないものをObjectと判断していいのか?」
    → あなたの定義の「Object」である場合もあるし、そうでない場合もある
    終わり

    930 = :

    またはじまったよw

    931 = :

    答え

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

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

    functionと返ってこないのであれば、
    functionではありません。

    932 = :

    ああ、そういうことか
    「"object" を返すものだけが真のobjectである」という説に落ち着けたかったのね
    実際には「Objectのインスタンスではない」というだけなんだけど

    933 = :

    >>931
    どこかで見覚えがある論法だと思ったら>>550だった
    相変わらず、適当すぎる答えだ

    934 = :

    正確にはこうだな

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

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

    「型」と [[Call]] と [[Class]] を混同する人はそれなりに多い

    935 = :

    上のほうで、typeofでその他が返って来た時が
    どうのこうのって言っていた奴いたじゃん?
    あれ何が言いたかったんだろうね。

    Objectであればinstanceofで調べられるわけで。

    936 = :

    >>935
    ツリー化すればわかるが、それは互換性云々の人
    屁理屈をこねて>>931の結論に持って行きたかっただけだと思う

    937 = :

    >>934
    話題とは関係ないけど、typeof null == "object" も忘れないでね

    938 = :

    >>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 = :

    javascriptの公式ロゴって無いんですか

    940 = :

    >>939
    JavaScriptに公式はないので公式ロゴもない
    あえてあげるならECMAか

    941 = :

    (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 = :

    (function(global){
    window.addEventListener("click", aaaaaaaaa, false);
    }(window));
    っていうふうにglobalじゃなくてwindowを使えば循環参照でメモリを食わないって認識でもいいですか?

    943 = :

    >>941-942
    aaaaaaaaa の関数定義がないので何ともいえないが、確認できる限りでは全てDOMとScriptで循環参照していない

    944 = :

    youtubeのチャンネル登録された動画をgetjsonで取得し、任意の数だけ表示させているのですが、非公開動画があるとその前の動画までしか表示してくれません。
    どうすれば、非公開動画を飛ばせますか?

    945 = :

    例外処理すればいいだけじゃないの
    ソースコードがないから何とも言えないけど

    946 = :

    >>943
    このスレと過去スレを呼んだら循環参照するって書いてありました

    947 = :

    >>946
    そして循環参照は何も問題にならないから
    循環して良いとも書いてあったでしょう?

    948 = :

    まじで
    ってことはglobal = nullって書かなくてもいいってことですか

    950 = :

    >>946
    aaaaaaaaa が無名関数式のケースで循環参照する、といわれていただけだろう
    あなたがちゃんと理解できていないだけ


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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