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

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

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

    >>946
    了解です。

    >>948-949
    面白い方法ですね。Function#name を使わないのは独自拡張だから(IE で使えない)からかな?

    name - MDC
    http://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/name

    953 = :

    ありがと。

    他言語での経験から.nameしてみたけどIE8だったので見事に無理でした。

    一般公開を目的としたサイトでIEで動かないような構築をしている人ってそんなに多いの?。

    954 = :

    クロスブラウザを考慮するなら、こんな感じかな。

    function getFunctionName (func) {
     var functionBody;

     functionBody = /^function\s+([^\s(]+)/.exec(func.toString());
     return functionBody ? functionBody[1] : functionBody; // Function#name || null
    }
    var a = function abc () { ; };
    console.log(a.name || getFunctionName(a));

    >>953
    Function#name を得る標準的な方法はないので独自拡張に頼るしかないんだと思います。
    IE8- はまともな方法では得られないんじゃないかな…。(IE9 はわかりませんが)

    # Function.prototype.name を拡張できたら面白そうではありますが。

    955 = :

    >>954
    参考になります

    956 = :

    しまった…。匿名関数を考慮していませんでした。
    匿名関数の Function#name は空文字を返すようです。(Google Chrome 7 で確認)

    var a = function () { ; };
    console.log('"' + a.name + '"'); // ""

    というわけで、>954の修正版。

    function getFunctionName (func) {
     var functionBody;

     functionBody = /^function\s+([^\s(]*)(?=\()/.exec(func.toString());
     return functionBody ? functionBody[1] : null; // Function#name || null
    }
    var a = function () { ; };
    console.log('"' + getFunctionName(a) + '"'); // ""

    本来は IdentifierName 生成規則に沿った方がいいと思いますが、解読に時間がかかりそうだったので省略しました。
    http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/7_Lexical_Conventions.html#Identifier
    http://sideshowbarker.github.com/es5-spec/#x7.6

    # Function.prototype.name を拡張するためにはFunctionコンストラクタを置き換えなくてはならず…、かなり面倒ですね。

    957 = :

    テンプレ論議している余裕はないので、新たな提案であればそれは
    次回回しということでお願いしたいです。次スレは975超えたら。

    959 = :

    http://developer.mozilla.org/ja/DOM/windowに掲載されているwindowオブジェクトってw3cでは掲載されてないのでしょうか?
    alertとかnavigatorとかそういうメソッドも見当たりませんでした
    http://www.w3.org/DOM/Activityからたどれる所は全て見たのですが探し方が悪いのでしょうが見当たりませんでした
    DOMの本家の情報は他にあるのでしょうか?

    960 = :

    DOMじゃないからでしょ

    962 = :

    >>958
    結局結論出なかったのかなんかで現状があるんでは。とりあえず
    今スレと同じにしておいて次スレ早々に確認しませんか。

    963 = :

    >>959
    HTML5のドラフトを見るんだ。

    964 = :

    >>959
    例えば、window.alert は MDC では "DOM Level 0" と説明されています。

    ---
    仕様
    DOM Level 0。どの標準にも属しません。
    http://developer.mozilla.org/ja/DOM/window.alert
    ---

    ---
    "DOM Level 0"
    "DOM Level 0" は W3C が DOM の標準化を始める前にブラウザ間で共通だったオブジェクトモデルです。

    ・Netscape の クライアントサイド JavaScript ガイド(Javascript と "DOM Level 0" を扱います)
    ・Netscape の クライアントサイド JavaScript リファレンス(Javascript と "DOM Level 0" を扱います)
    ・JavaScript スクリプティングリソース - "ダイナミック HTML" と JavaScript に関するさまざまなサイトへのリンク
    http://www.mozilla-japan.org/docs/web-developer/#scripting
    ---

    "DOM Level 0" は DOM 仕様としては策定されていませんが、デファクトスタンダードとして確立されている仕様を指します。
    (実際には window.open を IE が独自拡張していたりしますが、概ね全てのブラウザで同じ挙動を示します。)
    この辺りの曖昧さは HTML5 で標準化される予定です。
    W3C の HTML5 はhttp://www.w3.org/TR/html5/ にありますが、まだ最終草案段階なので WHATWG (http://whatwg.org/html5 ) の方が最新の情報が手に入ります。

    6.2 The Window object
    http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#the-window-object

    HTML5 はAudioオブジェクトなど新しい技術が注目されがちですが、実際にはデファクトスタンダードとして確立された仕様を改めて標準化しているものも数多く含んでいます。
    少し前に話題になった innerHTML もそうです。innerHTML は標準化こそされていませんでしたが多くのブラウザで(ほぼ)同じ振る舞いをします。
    これらは既にあるブラウザの実装に合わせて HTML5 で標準化されているので、未だ最終草案段階とはいえ勧告までに大きな変更があるとは思えません。

    965 = :

    > think49
    簡潔に書け

    IEはコメント除去しないどころじゃない
    function A, B(){
    }
    alert([A,B]);
    function A.prototype.a(){
    }
    alert(new A().a);
    IEだと動くんだぜコレ

    966 = :

    >>962
    いいですね。テンプレ議論をスレ最後でやるから間に合わなくなるっぽいですしね。

    967 = :

    >>959
    Window Object 1.0 (W3C Working Draft)

    968 = :

    >>965
    それを判断するのは質問者なのでは?
    詳しい回答が冗長に感じる人がいれば、簡潔な回答では物足りない人もいるでしょう。
    それがわからない以上、簡潔に書いても詳しく書いても同じだと私は思いますが。

    970 = :

    >>968
    独自研究は他所でやれ

    972 :

    長文はやめて欲しいが質問しまくる姿勢は尊敬するわ

    973 = :

    嫌いじゃないわこういうの
    いかにも初心者同士が教えあうって空気が

    974 = :

    load("url",false,funcname,"string");で呼んだ場合に2つ目のalert(arguments);がobjectに
    なってしまうのですがこれはどうしてでしょうか?。

    function load(url, async, callback, arguments) {
    alert(arguments);//
    m_xmlhttp.open("GET", url, async);
    m_xmlhttp.onreadystatechange = function() {
    if (m_xmlhttp.readyState == 4 && m_xmlhttp.status == 200) {
    alert(arguments);//
    callback(m_xmlhttp.responseText, arguments);
    }
    }
    m_xmlhttp.send();
    }

    975 = :

    argumentsという名前がいけない
    argumentsは予約語では無いが関数を呼び出した時に
    関数内で自動的に生成されるオブジェクト
    生成されたオブジェクトでは呼び出し元とか引数の値等が入ってる

    976 = :

    >>975
    そういう事でしたか、納得しました。
    ありがとうございます。

    977 = :

    全くの初心者で本読んでもほとんど理解できずに居ましたが、このスレの皆さんの助言によってようやくJavaScriptを扱えるようになり、本当に助かりました
    もう言葉じゃ表現出来ないほどの感謝の気持ちで一杯です
    本当にありがとうございました

    978 = :

    いいってことよ~

    979 = :

    for(var i = 0; i<5 ; i++){
      var a = $(document.createElement("div"));
      with({i:i}){
        a.click = function(){ alert(i); };
      }
      a.text("Withのてすと");
      $("body").append(a);
    }
    >>781-あたりでブロックスコープについての話題があったから調べてみたらwithで値を束縛できることを知ったのだけど、
    使わないほうがいいという事も書いてあったけど使わないほうがいい理由って何かあったりするの?

    980 = :

    スレ立て人ですが、スレ立て規制で建てられないです…
    どなたかお願いします。テンプレの変更は今回はなしですので…

    981 = :

    デザインパターンを勉強中なのですが、JSでVisitorパターンをどういう風に実装していいか悩んでいます
    型によるオーバーロードができないのでディスパッチ部分の記述がどうしても汚くなってしまいそうです
    なにか良い方法はないでしょうか

    982 = :

    デザパタといってもよく使うパターンがあってね
    結論からいうとVisitorパターンなんて使わないっすよね

    983 = :

    >>982
    なるほど
    なら別に実装方法を考える必要はなさそうですね
    ありがとうございました

    984 = :

    >>981
    JSについてはこの人の言うこと聞いておいていいと思うよ
    http://blog.livedoor.jp/dankogai/archives/51066288.html

    んじゃトイレ行って一休みしたら次スレ立ててくる

    985 = :

    間違えた>>981じゃなくて>>979

    987 = :

    こっちが埋まってもいないのに誘導すんなタコ

    988 = :

    お前が残りを全部埋めれば解決

    989 = :

    >>986

    990 = :

    >>979
    with は指定したオブジェクトをスコープチェインの先頭に追加するだけだから、

    ・変数の名前解決の効率低下の原因になり得る
    ・読むときに、変数がどの時点で解決されるか分かりにくい

    それに加えて、

    ・ES5 の strict mode では使用できない

    かな。

    991 = :

    >>990
    なるほどありがとう

    992 = :

    >>979はwithで遅くなる典型例
    ま、ループのたびに$("body")する時点で速度は度外視なんだろうが

    993 = :

    うめ

    994 = :

       | \
       |Д`) ダレモイナイ・・オドルナラ イマノウチ
       |⊂
       |


         ♪  Å
       ♪   / \   ランタ タン
          ヽ(´Д`;)ノ   ランタ タン
             (  へ)    ランタ ランタ
              く       タン



       ♪    Å
         ♪ / \   ランタ ランタ
          ヽ(;´Д`)ノ  ランタ タン
             (へ  )    ランタ タンタ
                 >    タン

    995 = :

    うめ

    999 = :

    モウツカレタヨ・・・

    1000 = :

    1000


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

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


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