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

    私的良スレ書庫

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

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

    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
    351 : think49 - 2011/08/07(日) 12:40:01.94 ID:??? (+40,-30,-120)
    >>348
    Function#name と Function#toString の値が異なります。
    関数宣言はいわゆる巻き戻しが発生しますが、関数式は巻き戻しが発生しません。(IE8- の名前付き関数式は例外)

    >>350
    名前付き関数式は IE8- にバグがあるので挙動を理解しているの出なければお勧めはしないです。IE8- では関数宣言と無名関数式が同時に定義されたかのように振る舞います。
    巻き戻しを嫌うのでしたら関数式ですが、IE8- を考慮するなら名前付き関数式を使えないので無名関数式一択ですね。
    http://d.hatena.ne.jp/think49/20110521/1305959222
    352 : Name_Not - 2011/08/07(日) 12:43:11.76 ID:??? (+3,-29,-26)
    > 関数宣言はいわゆる巻き戻しが発生しますが、関数式は巻き戻しが発生しません。(IE8- の名前付き関数式は例外)
    へー、そうだったのか
    早くIE9普及しないかな、windows8からはデフォがIE9になるんだべ
    353 : Name_Not - 2011/08/07(日) 12:56:07.90 ID:??? (+112,+28,-135)
    >>351
    その文脈における「巻き戻し」というのはスコープに入った時、関数としてアクセスできるかって事?
    関数式の場合は「var」で変数宣言すればローカル変数になってるから変数自体にはアクセスできるけど
    スコープに入った直後は「undefined」だから、関数が代入されるまで関数としてアクセスできない、ってことかな?
    354 : Name_Not - 2011/08/07(日) 12:56:08.86 ID:??? (-5,-28,-8)
    IE8はXPが残る限り残るだろ
    355 : Name_Not - 2011/08/07(日) 12:58:27.49 ID:??? (+5,-28,-36)
    IEってIE9からやっと他のに追いついたって感じなんだよなぁ
    IE8でHTML5とかに対応させなかったのが痛い
    357 : think49 - 2011/08/07(日) 13:24:20.43 ID:??? (-12,-29,-86)
    >>356
    × ・関数宣言では関数呼び出し時に関数オブジェクトを実体化します。
    ○ ・関数宣言では上位スコープの関数呼び出し時に関数オブジェクトを実体化します。 (グローバルコードならスクリプトコードがパースされた段階で実体化します)

    正確に伝えるのって難しい…。
    358 : Name_Not - 2011/08/07(日) 13:33:52.13 ID:??? (-1,-29,-17)
    巻き戻し(Hoisting)はここがわかりやすいかも
    http://efcl.info/adiary/JavaScriptPatterns/Chapter4Functions
    359 : Name_Not - 2011/08/07(日) 13:45:32.47 ID:??? (+62,+29,-11)
    >>357
    丁寧に返答してくれてありがとう
    この辺りは厳密に理解するのが難しいわ…
    360 : Name_Not - 2011/08/07(日) 14:23:58.06 ID:??? (+40,+12,-40)
    >>357
    関数宣言は宣言されてる文脈(実行コンテキスト)進入時点で実体化されてるしょ。
    呼び出しとかグローバルコードとか関係なく。
    361 : think49 - 2011/08/07(日) 14:41:37.10 ID:??? (+78,-30,-247)
    私が読み間違えているのかもしれませんが、関数コードは実行コンテキストに入るために関数呼び出しが必要と認識していました。
    http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/13_Function_Definition.html#section-13.2.1

    function hoge () {
     piyo();
     function piyo () { alert('piyo'); } // hoge が [[Call]] された時に実行コンテキストを設置して piyo が実体化される
    }
    hoge();

    >http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/10_Execution_Contexts.html#section-10.1.3
    "意味論的に、このステップは FormalParameterList プロパティの生成に続かなければならない。" とあるので [[Call]] の後だろうと解釈したのですが…、解釈の仕方を間違えているのでしょうか?
    362 : Name_Not - 2011/08/07(日) 14:48:47.37 ID:??? (+4,-24,-31)
    >>355
    HTML5はまだ草案だからいいけど、XHTMLとかDOM2とかにまともに対応してないのが面倒くさい
    363 : Name_Not - 2011/08/07(日) 15:16:41.50 ID:??? (+60,+27,-32)
    >>361
    「上位スコープの関数呼び出し時」 = 「宣言されてる文脈(実行コンテキスト)進入時」

    てことか。スマソ
    364 : Name_Not - 2011/08/07(日) 15:34:00.35 ID:??? (+89,+29,-11)
    「巻き上げ」とちゃうの?
    365 : think49 - 2011/08/07(日) 17:57:49.31 ID:??? (+79,+29,-140)
    >>364
    変数宣言による巻き上げはよく見ますが、関数宣言の巻き上げは見覚えがなかったので>>353で指摘されて「間違えちゃったか」と脊髄反射レスしてました。
    (ECMAScript 仕様にない造語なので確かめにくくて…って言い訳かな)

    『JavaScript パターン』(P63) に「4.1.4 関数の巻き上げ」がありました。どうやらどちらも巻き上げで問題なかったようです。
    >>361に近いコードが 4.1.2 で触れられていますね。
    366 : think49 - 2011/08/07(日) 18:02:00.33 ID:??? (+57,+29,-20)
    …って、「巻き上げ」と「巻き戻し」か。
    ごめんなさい、素で間違えてました。
    368 : Name_Not - 2011/08/07(日) 20:19:08.67 ID:??? (-7,-30,-23)
    >>367
    DOMContentLoaded とか一部のイベントタイプは無理だけど 'onfoo' in element
    369 : 367 - 2011/08/07(日) 20:22:51.70 ID:??? (+4,-29,-16)
    すみません
    > DOMContentLoaded
    こういうの判断したいです・・・無理ですか
    370 : Name_Not - 2011/08/07(日) 20:34:50.56 ID:??? (+13,-29,-32)
    >>368
    Chromeだとtrue返すけどFirefoxだとfalse返す?何か間違えてるかな俺
    371 : Name_Not - 2011/08/07(日) 20:53:28.19 ID:??? (+10,-18,-35)
    >>370
    コードを書かなければ検証もできない
    そのコードが正しいならFirefoxは未対応なんだろう
    372 : Name_Not - 2011/08/07(日) 20:57:19.01 ID:??? (+3,-30,-83)
    <body>
    </body>
    <script>
    alert("onload" in window);
    alert("onclick" in document.documentElement);
    alert("onclick" in document.body);
    </script>
    こんなんだけど
    373 : think49 - 2011/08/07(日) 21:21:58.38 ID:??? (+3,-30,-63)
    >>369
    意図的に該当イベントが発火するようにコーディングして、発火タイミングで Event#isTrusted を見るぐらいでしょうか。
    Event#isTrusted は Firefox4 しか対応していませんが…。
    http://jsfiddle.net/vW7Rk/
    374 : 367 - 2011/08/07(日) 21:34:41.63 ID:??? (+57,+29,-32)
    必要になる前に一度イベントを発生させて
    イベントリスナーが反応するか試す
    みたいな感じですか
    ふーちゃーでてくしょんみたいな方法があるのかなと思ってました
    ありがとうございます
    375 : think49 - 2011/08/07(日) 22:48:31.49 ID:??? (+4,-30,-60)
    >>370,372
    Modernizr では setAttribute を利用しているようです。isEventSupported の辺り。
    http://www.modernizr.com/
    http://kangax.github.com/iseventsupported/
    setAttribute を持たないノードに対しては HTMLDivElement で代替したり、setAttribute で該当ノードを書き換えている点でいい手法とは思えませんが、代替手段がないので仕方ないのかな…。
    376 : Name_Not - 2011/08/08(月) 09:44:56.08 ID:Dk/vH1PY (-14,-30,-101)
    質問です
    JavaScriptにはclassは無いとよう言われますが
    alert(Document)やalert(Element)とすると[object class]と表示されます
    これらは使い道を考えても、JAVAやCのようなclassでは無いものの、十分classと言って良いものなのではないでしょうか?
    つまり、特殊な身分のclassではないものの、JavaScriptにもclassはありますよね?
    377 : Name_Not - 2011/08/08(月) 09:55:24.78 ID:??? (+58,+23,-18)
    あるけど、対応してないブラウザとかあって
    あまり推奨されてない
    っていうか推奨されてないから対応してないブラウザがあるって感じだったよーな
    378 : Name_Not - 2011/08/08(月) 11:10:22.11 ID:??? (+61,+29,-27)
    >>376
    何その議論のための議論みたいな質問。それなら「classの定義」を
    まず述べてみていただけますか。
    379 : Name_Not - 2011/08/08(月) 15:15:15.72 ID:??? (+56,+28,-18)
    JavascriptでClassは使うなって父方の祖父に言われた
    380 : Name_Not - 2011/08/08(月) 19:43:42.79 ID:??? (+91,+29,-7)
    JavaScript でも instance という言葉が使われるのに、それと対極を成す言葉がないのはおかしくないか。
    381 : Name_Not - 2011/08/08(月) 20:00:09.14 ID:??? (+113,+29,-3)
    >>380
    インスタンスがあるからクラスもあるとは限らない
    382 : Name_Not - 2011/08/08(月) 20:32:54.64 ID:??? (+105,+29,-12)
    >>381
    JavaScript にもクラスの概念はある、ということには賛同なんですね。
    "クラス" と呼ぶものが JavaScript の実装に存在しているかどうかは別にして。
    383 : Name_Not - 2011/08/08(月) 20:40:09.63 ID:??? (-6,-29,-1)
    ECMAScript仕様読め
    384 : Name_Not - 2011/08/08(月) 21:02:26.18 ID:??? (+52,+29,-5)
    対極はコンストラクタでしょ?
    385 : Name_Not - 2011/08/08(月) 22:08:00.57 ID:??? (+72,+29,-4)
    >>382
    認めてないし、どうしたらそんな解釈になるのかな
    386 : Name_Not - 2011/08/08(月) 22:40:22.76 ID:??? (+52,+29,-1)
    認めてるくせに。
    387 : Name_Not - 2011/08/08(月) 22:40:34.21 ID:??? (+84,+29,-9)
    自分が思い込んでいることを是正できない頭でっかちなんだろ
    何言っても無駄だからスルーしとけ
    388 : 381 - 2011/08/08(月) 22:42:20.68 ID:??? (+53,+19,-1)
    >>387
    だな。
    389 : Name_Not - 2011/08/09(火) 07:24:39.82 ID:??? (+3,-29,-37)
    【コラム】そろそろきっちりJavaScript (4) クラスベースとプロトタイプベースの違い | エンタープライズ | マイコミジャーナル
    http://journal.mycom.co.jp/column/js/004/index.html
    390 : 376 - 2011/08/09(火) 09:17:20.70 ID:??? (+118,-29,-72)
    >377
    非推奨で使えないブラウザがあるとは驚きました
    それならHTMLCollection.prototypeとかはどのように実装したらいいのでしょうか?

    >378
    ClassとはObjectを抽象的に一般化したものと認識しています
    よって多くの言語で雛型の様な使い方がされていますが、別にどのくらいどのように利用できるかは本質ではないと思います
    391 : Name_Not - 2011/08/09(火) 10:41:33.63 ID:??? (+63,+30,-155)
    自分でも「classではないがclassのようなもの」みたいな表現をしているけど
    (「JAVAやCのようなclassでは無いものの」「特殊な身分のclassではないものの」)
    それをClassと思いたいんならそう思えばいいんでないの
    自分の中で自分ルールの線引きがあるみたいだし他人に意見を求める必要はないんでないの
    自分の中で答えが決まっているのになぜ意見を求めるの?求めているのは意見じゃなくて同意?
    知り合いと言い争いになって、自分のほうが正しいという後ろ盾がほしいとか?
    名無しの後ろ盾でいいのなら、あなたのいうとおり!あなたがただしい!
    392 : Name_Not - 2011/08/09(火) 11:12:43.10 ID:??? (+24,-3,-3)
    表現のためのClassならありますってだけだろ
    393 : Name_Not - 2011/08/09(火) 12:52:09.85 ID:??? (+52,+29,-1)
    3組の山本がかわいいまで読んだ
    394 : Name_Not - 2011/08/09(火) 12:58:01.97 ID:??? (+57,+29,-45)
    おまえらがんばたって海外のデベロッパーに勝てないのになんで無駄なことしてんの?
    海外のデベロッパーが作ったライブラリをちまちまいじってるだけだろ?
    395 : Name_Not - 2011/08/09(火) 14:06:18.49 ID:??? (+64,+29,-23)
    >>390
    仕様にない用語は自己表現なので人に伝える手段としては適切でないことが多いよ
    396 : Name_Not - 2011/08/09(火) 14:20:52.65 ID:??? (+19,-30,-228)
    IE6 で URL 末尾のクエリ文を取得する方法について教えてください。
    以下の内容は IE6 ですが、IE7 以降では問題なく実行できるようです。
    もしスレチだったら誘導をお願いします。

    【環境】 
     WindowsXP + IE6 + HTA + JavaScript

    【何をしたのか】
     ・mshta.exe を使って、別のウィンドウで HTA の画面を表示する
     ・その際に、新しく開く側の HTA 内でクエリを受け付けたい
     ・上記のため、【サンプルコード】を呼び出し側の HTA ファイル内で実行してみた

    【期待する結果】
     location.search でクエリ文を受け取りたい。
     が、 空文字しか取得できない。

    【サンプルコード】
    var script = new ActiveXObject( "WScript.Shell" );
    script.Exec( "mshta.exe ""[HTAファイルのパス]?param=001""" );
    397 : Name_Not - 2011/08/09(火) 15:46:31.27 ID:??? (+109,+30,-57)
    >>390
    その俺様定義には異論があるね。オブジェクトを抽象化するって
    何を取捨選択するわけさ。もっと普通の定義を参照して欲しい。
    398 : Name_Not - 2011/08/09(火) 19:06:15.33 ID:??? (+115,+29,-56)
    >>390
    > ClassとはObjectを抽象的に一般化したものと認識しています
    同意出来ない。そもそも、クラスベースとかJavaとか厳密に定められた定義があるのに何でオレオレ定義にするの?
    あなたは「JavaScriptにもオレオレ定義のClassがありますよね」っていってるだけだよ。
    そのオレオレ定義でさえ曖昧すぎて同意できない。
    399 : Name_Not - 2011/08/09(火) 19:40:50.00 ID:??? (+63,+30,-33)
    ウンコではないもののウンコのようなもの
    それはじゅうぶんウンコといっていいのではないでしょうか!?
    つまりカレーは、ウンコではないものの、ウンコですよね!?

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

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


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