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

    私的良スレ書庫

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

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

    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
    601 : Name_Not - 2010/06/09(水) 03:53:42 ID:??? (+77,-30,-284)
    JSフレームワークってみなさん使いこなせてますか?
    prototype.jsを使ってる場合、
    document.getElementById("foo").style.color="red";
    document.getElementById("foo").style.fontSize="2em";
    これが、
    $("foo").setStyle({color:"red",fontSize:"2em"});
    とかけますが、
    idを$(id)でとることは知ってても、setStyleで複数スタイルを設定できると知らずに、
    $("hoge").style.color="red";
    $("hoge").style.fontSize="2em";
    と書いてしまう人もいると思います。
    このようにフレームワークを使ってても使いこなせず、
    無駄なコードを書いてしまわないためにはどうしたらいいのでしょうか?
    チュートリアルやドキュメントをしっかり読んで覚えていっても、
    知らなくて無駄になるコードがでてきてしまうと思いますが、
    それは仕方がないと割り切ってやるしかないですか?
    602 : Name_Not - 2010/06/09(水) 03:55:34 ID:??? (+25,+7,+0)
    コード嫁
    603 : Name_Not - 2010/06/09(水) 04:08:37 ID:??? (+92,+27,-5)
    中身も知らないライブラリをよく使えるな。
    604 : Name_Not - 2010/06/09(水) 04:10:40 ID:??? (+57,+29,-26)
    まじですか?みなさんあのコードを全部読んで理解してから使うんですか?
    それはすごい・・・
    605 : Name_Not - 2010/06/09(水) 04:14:00 ID:??? (+223,+29,-87)
    >>603
    オブジェクト指向の基本的な考え方で
    中身を知らないで使えるのが利点だと思うのですが
    扱い方を知るためにソースコードを読み進めるというのは本末転倒だと思います
    通常は使い方を示したドキュメントを用意するだけです
    606 : Name_Not - 2010/06/09(水) 08:03:19 ID:??? (-1,-29,-45)
    開発環境使だと<script>で読み込むだけでprototype.jsとかjQueryとかの関数の候補が出てくるから楽だわ
    607 : Name_Not - 2010/06/09(水) 09:42:26 ID:??? (+57,+29,-42)
    とりあえずAPIを全部読んでどんな関数があるか把握しておけば
    「ありえない」レベルのコードを書くことはなくなるんじゃないか
    608 : Name_Not - 2010/06/09(水) 11:00:45 ID:??? (+70,+29,-4)
    >>605
    じゃあ何で>>601のような疑問が出てくるんだ?
    609 : Name_Not - 2010/06/09(水) 11:11:51 ID:??? (+57,+29,-1)
    はいはい中身全部把握しててすごいですね
    610 : Name_Not - 2010/06/09(水) 11:51:23 ID:??? (+57,+29,-30)
    ソース全部読むのと自作するのとどっちが楽かな。
    611 : Name_Not - 2010/06/09(水) 12:04:00 ID:??? (+81,+30,-149)
    >>601
    prototype.js とか jQuery なんて規模の小さなフレームワークなんだから、
    まずは一通り、ざっくりとリファレンスに目を通しては?
    とりあえず「何ができるか」だけ覚えておけば、あとは逆引きで調べられるしね。

    >>605
    あとオブジェクト指向を誤解してるよ。
    ブラックボックスたるのはプログラムからであって、人間にとってでないです。
    ソースを追っかけられる選択は時代的にも必須かと。
    お勉強にもなるしね!
    612 : Name_Not - 2010/06/09(水) 12:15:16 ID:??? (+94,+29,-56)
    言語にインポート機能すらなく
    しかも常にクライアント側にダウンロードされなきゃいけないものが
    従来のライブラリと同じ考えでいけるわけがなかろ
    613 : Name_Not - 2010/06/09(水) 12:17:47 ID:??? (+92,+23,-26)
    だからある意味、ライブラリと呼べるのはホストオブジェクトのDOMまで
    それ以降は制作者の都合でしかない便利ツール
    614 : Name_Not - 2010/06/09(水) 12:40:25 ID:??? (+41,+23,+0)
    だね
    615 : Name_Not - 2010/06/09(水) 18:48:01 ID:??? (+7,-30,-130)
    jQueryにはcreateElementできる関数がないのがたまに不便だなあ

    メモ
    Element = function(n,a){
      var e = document.createElement(n);
      if(a instanceof Object)
        for(var i in a)
          e.setAttribute(i,a[i]);
      return e;
    }

    >>> new Element( "input" , { type : "text", value : "hello" , name : "example" } );

    <input type="text" value="hello" name="example">
    616 : Name_Not - 2010/06/09(水) 18:55:07 ID:??? (+64,-30,-24)
    function(){}();
    (function(){})();
    この二つに違いはあるのでしょうか?
    617 : Name_Not - 2010/06/09(水) 18:55:24 ID:??? (+111,+29,-78)
    >>612
    意味がわからない。
    従来のライブラリって .so とか .dll のこと?
    それと何が違うの?
    言語構造から開発思想を制限しすぎじゃない?

    >>613
    意味がわからない。
    その便利ツール、汎用性の高い再利用可能なプログラムが
    「ライブラリ」なんじゃないの……?
    618 : Name_Not - 2010/06/09(水) 18:58:25 ID:??? (+9,-30,-97)
    それってnewいらないんじゃ?そしてappendchildされてないですよね。

    作るなら、
    Element = function(n,a){
      this.elm = document.createElement(n);
      if(a instanceof Object)
        for(var i in a)
          this.elm.setAttribute(i,a[i]);
    }
    Element.prototype = {
    append: function (p){
    p.appendChild(this.elm)
    },
    setAttr: function (){

    }
    }
    みたいな?
    619 : Name_Not - 2010/06/09(水) 19:06:50 ID:??? (+8,-30,-33)
    >>618
    newしてるのは分かり易くするため、appendしないのはあくまでもエレメントを作るだけの関数だから
    要は
    $("body").append(new Element("div",{class:"hage"}));
    のように使いたいだけ
    620 : Name_Not - 2010/06/09(水) 19:09:48 ID:??? (+62,+29,-24)
    >>616
    ()で括って一つの表現にしてるだけ、違いは無い
    構造を分かりやすくするためによく使う
    621 : Name_Not - 2010/06/09(水) 19:33:07 ID:??? (+181,+29,-45)
    >>617
    お前さんはWebという環境の制限を無視し過ぎ
    場合によっちゃクライアント側の制約に応じてライブラリの中身さえ削らなきゃいけないのに
    汎用性? そいつは一体なんだ?
    622 : Name_Not - 2010/06/09(水) 19:33:08 ID:??? (+40,+10,-5)
    >>616
    上だと実行できなくね?
    623 : Name_Not - 2010/06/09(水) 19:34:08 ID:??? (+66,-30,-54)
    >>615
    http://api.jquery.com/jQuery/#jQuery2
    $('<input/>', {
     type: 'text',
     value: 'hello',
     name: 'example'
    });

    >>616
    前者は文頭に置けない
    624 : Name_Not - 2010/06/09(水) 19:44:53 ID:??? (+62,+29,-3)
    >>623
    関数探しても無いと思ったらそうやって作れたのかありがと
    625 : Name_Not - 2010/06/09(水) 20:13:34 ID:??? (+0,-30,-42)
    >>619
    htmlそのままでよくない?
    $("body").append('<div class="hage"></div>')

    そして意味もないのにnewするのはどうかと思う
    626 : Name_Not - 2010/06/09(水) 20:41:37 ID:??? (+67,+29,-194)
    docomoに次いでSoftBankもJavaScriptに満足に対応したので
    これからJavaScriptを使った携帯サイトが増えてくると思いますが
    携帯の場合ゲーム等のコンテンツにかなり使えるのではないかと考えています
    (端末間の仕様差も少ないですし)
    もし成功したらJavaScriptの名をもっと高められるに違いありませんし、これはやるしかないですよね

    そこで質問なのですが、音楽等の処理にFlashを使おうと考えてます
    そこでJavaScriptとFlashを連携させたいのですが、hashの指定で可能でしょうか?
    それともパラメータの書き換え?
    最悪Flashごと入れ替えるしかないですか?

    また、JAVAと連携させたいときは起動リンクのパラメータを変えればよいですか?

    めんどくさいでしょうがどうかお願いします
    627 : Name_Not - 2010/06/09(水) 20:44:23 ID:??? (+6,-29,-21)
    >>626
    JavaScriptでFlashをいじりたいならSWFObjectが便利
    628 : Name_Not - 2010/06/09(水) 20:45:38 ID:??? (+53,+25,-44)
    flashはjavascriptから操れるんだが、携帯用は無いのか?
    flashを全部ページにおいておいてjsで再生とかやるけど。
    javaはわからんすまん。
    629 : Name_Not - 2010/06/09(水) 20:45:52 ID:??? (+155,+30,-98)
    >>621
    「クライアント側の制約」と「Webという環境の制限」は別問題では?
    場合によっちゃ MFC だってソースいじるし、それこそライブラリのリビルドなんて当たり前じゃない?
    修正が必要だからって汎用性が無い、ライブラリじゃない、ってのはちょっと無理矢理すぎるよ。
    あるものそのままじゃなきゃヤダなんてロマンチストすぎ。
    630 : Name_Not - 2010/06/09(水) 21:02:04 ID:??? (+62,+29,-86)
    LLなら(物理的にも労力的にも)コードが比較的読みやすいっていうのと
    LL故にドキュメントがおざなりなことも多いから、勉強も兼ねてコード読むのが推奨されるんだよな
    javascriptもその例に漏れてないだけだと思うぞ

    カプセル化も結構だが、原理の知らないツールなんて使えても使いこなせはしねえよ
    631 : Name_Not - 2010/06/09(水) 21:08:17 ID:??? (+157,+29,-82)
    >>629
    言っとくが「あるものそのままじゃなきゃヤダ」と言ってるのは>>605その他で
    俺はWebでは「ライブラリのリビルドなんて当たり前」で
    「あるものそのまま」で使えるのはクライアント側のDOMが限界だと言ってるんだぞ?
    632 : Name_Not - 2010/06/09(水) 21:11:16 ID:??? (+85,+29,-45)
    >>631続き

    >>629
    だから「あるものそのままじゃなきゃヤダ」という
    「汎用性の高い再利用可能な」ものがライブラリだというお前の定義に従うなら
    その辺のものはライブラリじゃない、ということになるだけ
    633 : Name_Not - 2010/06/09(水) 21:15:35 ID:??? (+87,+29,-5)
    >>605の思考的には継承やらオーバーロードしろってことだろう
    634 : Name_Not - 2010/06/09(水) 21:36:17 ID:??? (+46,+13,-83)
    prototype.jsとjquery.jsの両方をインクルードするサイトが少なくないのは
    結局、汎用性の高い部品の共通化がうまくできてないってことでは

    そこでまた標準化プロセスになって時間がかかるんだろうけど
    635 : Name_Not - 2010/06/09(水) 21:58:46 ID:??? (+90,-30,-61)
    >>616
    宣言と式。まったく別物。

    function(){}

    関数宣言として扱われる。識別子のない関数宣言は構文違反。

    (function(){})

    小括弧の内側は式として評価され関数オブジェクトを返す。
    識別子付けて「関数宣言だ」てなことにならないように。

    要は関数式として評価してもらえれば小括弧で囲む必要なんてない。
    636 : Name_Not - 2010/06/09(水) 23:29:30 ID:??? (+143,+29,-70)
    >>631
    え、じゃあ、 >>621 では何が言いたかったの?
    あなたの背景知識がわからないから何ともだけど、
    正直な感想、井の中の蛙っぽいです。

    >>635
    重箱だけど「文」と「式」ですね。
    637 : Name_Not - 2010/06/09(水) 23:49:07 ID:??? (+73,+29,-21)
    >>636
    正直な感想、俺もお前が何に絡んできているのかよく分からない
    638 : Name_Not - 2010/06/10(木) 00:04:21 ID:??? (+73,+22,-2)
    >>636
    関数宣言は文ではないから>>635で正しい
    639 : Name_Not - 2010/06/10(木) 00:16:20 ID:??? (+58,+26,+0)
    >>623
    目から鱗
    640 : Name_Not - 2010/06/10(木) 06:10:13 ID:??? (+82,+29,-8)
    >>621 が何言いたいのか知りたいだけじゃないの?
    641 : Name_Not - 2010/06/10(木) 06:12:25 ID:??? (+49,-30,-10)
    >>638
    (function() {})()
    これが式。

    function(){}()
    これは文。関数宣言はしていない。
    642 : Name_Not - 2010/06/10(木) 06:35:17 ID:??? (+76,-30,-94)
    >>641
    function(){}()
    ECMA-262に従えば、これは文ではない
    名前がないから関数宣言でもなくsyntax error

    さらに言えば、JScriptなら
    (function(){})()
    これは式であり、同時に宣言でもある

    言語規格か言語仕様のどちらをとり上げるかの問題だが、
    少なくともお前さんの書き方は混乱を招く
    643 : Name_Not - 2010/06/10(木) 10:08:25 ID:??? (+36,-30,-104)
    10進数を16進数に変換したいのですが
    alert(255.toString(16));
    だと255は数値ではなく変数として扱われるので動きません
    かといって
    var i = 255;
    alert(i.toString(16));
    とわざわざ一度変数に入れるのは冗長な気がします
    そこで
    alert((255).toString(16));
    としたところうまく動いたのですが見慣れない感じでなんかきもちわるいです
    もっとすっきりした書き方はないでしょうか?
    644 : Name_Not - 2010/06/10(木) 10:33:03 ID:??? (+96,+29,-18)
    >>643
    それが一番すっきりしてると思う。
    が、定数だったら素直に16進数で書けば、もっとすっきりする。
    定数なら、その場限りで変更はないんだから。
    645 : Name_Not - 2010/06/10(木) 10:34:40 ID:??? (+70,+29,-2)
    >>644
    なるほど!盲点でした
    どうもありがとうございます
    646 : Name_Not - 2010/06/10(木) 12:50:45 ID:??? (+68,+25,-55)
    >>642
    サイ本にfunction文と書いてあるから>>641みたいな理解(誤解)はよく見かける
    実際、JS 1.5の拡張構文としてならFunctionStatementがあるし

    それでも「関数宣言はしていない」の意味は分からないな
    >>642のように構文エラーと言うつもりだったのか
    JS 1.5の拡張構文だから宣言ではないと言いたいのか
    function文は全て宣言ではないと本気で信じ込んでいるのか
    647 : Name_Not - 2010/06/10(木) 15:39:23 ID:??? (+6,-27,-46)
    JScriptは式の位置でも関数宣言をできるようにして関数式もどきを実装していたのか、知らなかった
    ところで手続き型言語において、手続き順を無視して処理されるstatementなんて存在するの?
    649 : Name_Not - 2010/06/10(木) 18:23:06 ID:??? (-4,-30,-38)
    試しにローカルでexam0.jsとexam1.jsを作って
    scrpt.onload=・・ を変えてページ移動のスクリプトを実行させてみたけど
    エラーにはならなかったよ。
    ちなみにIE7
    650 : Name_Not - 2010/06/10(木) 18:26:40 ID:??? (+44,-30,-141)
    今日のググルのトップは背景に写真でてますが、
    ブラウザの描画範囲を縮小拡大したりサイズかえると画像もリサイズされます。
    あれはどのようにやるのでしょう?
    ブラウザの描画領域がかわったことを検出できるイベントなんてありましたっけ?
    あとimgならwidth,height指定できますが、
    cssのbackground-imageっぽいし、どうやってサイズを指定してるのでしょう?
    見当のつくかたぜひ教えてください。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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