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

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

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

601 = :

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

コード嫁

603 = :

中身も知らないライブラリをよく使えるな。

604 = :

まじですか?みなさんあのコードを全部読んで理解してから使うんですか?
それはすごい・・・

605 = :

>>603
オブジェクト指向の基本的な考え方で
中身を知らないで使えるのが利点だと思うのですが
扱い方を知るためにソースコードを読み進めるというのは本末転倒だと思います
通常は使い方を示したドキュメントを用意するだけです

607 = :

とりあえずAPIを全部読んでどんな関数があるか把握しておけば
「ありえない」レベルのコードを書くことはなくなるんじゃないか

608 = :

>>605
じゃあ何で>>601のような疑問が出てくるんだ?

609 = :

はいはい中身全部把握しててすごいですね

610 = :

ソース全部読むのと自作するのとどっちが楽かな。

611 = :

>>601
prototype.js とか jQuery なんて規模の小さなフレームワークなんだから、
まずは一通り、ざっくりとリファレンスに目を通しては?
とりあえず「何ができるか」だけ覚えておけば、あとは逆引きで調べられるしね。

>>605
あとオブジェクト指向を誤解してるよ。
ブラックボックスたるのはプログラムからであって、人間にとってでないです。
ソースを追っかけられる選択は時代的にも必須かと。
お勉強にもなるしね!

612 = :

言語にインポート機能すらなく
しかも常にクライアント側にダウンロードされなきゃいけないものが
従来のライブラリと同じ考えでいけるわけがなかろ

613 = :

だからある意味、ライブラリと呼べるのはホストオブジェクトのDOMまで
それ以降は制作者の都合でしかない便利ツール

614 = :

だね

615 = :

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

function(){}();
(function(){})();
この二つに違いはあるのでしょうか?

617 = :

>>612
意味がわからない。
従来のライブラリって .so とか .dll のこと?
それと何が違うの?
言語構造から開発思想を制限しすぎじゃない?

>>613
意味がわからない。
その便利ツール、汎用性の高い再利用可能なプログラムが
「ライブラリ」なんじゃないの……?

618 = :

それって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 = :

>>618
newしてるのは分かり易くするため、appendしないのはあくまでもエレメントを作るだけの関数だから
要は
$("body").append(new Element("div",{class:"hage"}));
のように使いたいだけ

620 = :

>>616
()で括って一つの表現にしてるだけ、違いは無い
構造を分かりやすくするためによく使う

621 = :

>>617
お前さんはWebという環境の制限を無視し過ぎ
場合によっちゃクライアント側の制約に応じてライブラリの中身さえ削らなきゃいけないのに
汎用性? そいつは一体なんだ?

622 = :

>>616
上だと実行できなくね?

623 = :

>>615
http://api.jquery.com/jQuery/#jQuery2
$('<input/>', {
 type: 'text',
 value: 'hello',
 name: 'example'
});

>>616
前者は文頭に置けない

624 = :

>>623
関数探しても無いと思ったらそうやって作れたのかありがと

626 = :

docomoに次いでSoftBankもJavaScriptに満足に対応したので
これからJavaScriptを使った携帯サイトが増えてくると思いますが
携帯の場合ゲーム等のコンテンツにかなり使えるのではないかと考えています
(端末間の仕様差も少ないですし)
もし成功したらJavaScriptの名をもっと高められるに違いありませんし、これはやるしかないですよね

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

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

めんどくさいでしょうがどうかお願いします

627 = :

>>626
JavaScriptでFlashをいじりたいならSWFObjectが便利

628 = :

flashはjavascriptから操れるんだが、携帯用は無いのか?
flashを全部ページにおいておいてjsで再生とかやるけど。
javaはわからんすまん。

629 = :

>>621
「クライアント側の制約」と「Webという環境の制限」は別問題では?
場合によっちゃ MFC だってソースいじるし、それこそライブラリのリビルドなんて当たり前じゃない?
修正が必要だからって汎用性が無い、ライブラリじゃない、ってのはちょっと無理矢理すぎるよ。
あるものそのままじゃなきゃヤダなんてロマンチストすぎ。

630 = :

LLなら(物理的にも労力的にも)コードが比較的読みやすいっていうのと
LL故にドキュメントがおざなりなことも多いから、勉強も兼ねてコード読むのが推奨されるんだよな
javascriptもその例に漏れてないだけだと思うぞ

カプセル化も結構だが、原理の知らないツールなんて使えても使いこなせはしねえよ

631 = :

>>629
言っとくが「あるものそのままじゃなきゃヤダ」と言ってるのは>>605その他で
俺はWebでは「ライブラリのリビルドなんて当たり前」で
「あるものそのまま」で使えるのはクライアント側のDOMが限界だと言ってるんだぞ?

632 = :

>>631続き

>>629
だから「あるものそのままじゃなきゃヤダ」という
「汎用性の高い再利用可能な」ものがライブラリだというお前の定義に従うなら
その辺のものはライブラリじゃない、ということになるだけ

633 = :

>>605の思考的には継承やらオーバーロードしろってことだろう

634 = :

prototype.jsとjquery.jsの両方をインクルードするサイトが少なくないのは
結局、汎用性の高い部品の共通化がうまくできてないってことでは

そこでまた標準化プロセスになって時間がかかるんだろうけど

635 = :

>>616
宣言と式。まったく別物。

function(){}

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

(function(){})

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

要は関数式として評価してもらえれば小括弧で囲む必要なんてない。

636 = :

>>631
え、じゃあ、 >>621 では何が言いたかったの?
あなたの背景知識がわからないから何ともだけど、
正直な感想、井の中の蛙っぽいです。

>>635
重箱だけど「文」と「式」ですね。

637 = :

>>636
正直な感想、俺もお前が何に絡んできているのかよく分からない

638 = :

>>636
関数宣言は文ではないから>>635で正しい

639 = :

>>623
目から鱗

640 = :

>>621 が何言いたいのか知りたいだけじゃないの?

641 = :

>>638
(function() {})()
これが式。

function(){}()
これは文。関数宣言はしていない。

642 = :

>>641
function(){}()
ECMA-262に従えば、これは文ではない
名前がないから関数宣言でもなくsyntax error

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

言語規格か言語仕様のどちらをとり上げるかの問題だが、
少なくともお前さんの書き方は混乱を招く

643 = :

10進数を16進数に変換したいのですが
alert(255.toString(16));
だと255は数値ではなく変数として扱われるので動きません
かといって
var i = 255;
alert(i.toString(16));
とわざわざ一度変数に入れるのは冗長な気がします
そこで
alert((255).toString(16));
としたところうまく動いたのですが見慣れない感じでなんかきもちわるいです
もっとすっきりした書き方はないでしょうか?

644 = :

>>643
それが一番すっきりしてると思う。
が、定数だったら素直に16進数で書けば、もっとすっきりする。
定数なら、その場限りで変更はないんだから。

645 = :

>>644
なるほど!盲点でした
どうもありがとうございます

646 = :

>>642
サイ本にfunction文と書いてあるから>>641みたいな理解(誤解)はよく見かける
実際、JS 1.5の拡張構文としてならFunctionStatementがあるし

それでも「関数宣言はしていない」の意味は分からないな
>>642のように構文エラーと言うつもりだったのか
JS 1.5の拡張構文だから宣言ではないと言いたいのか
function文は全て宣言ではないと本気で信じ込んでいるのか

647 = :

JScriptは式の位置でも関数宣言をできるようにして関数式もどきを実装していたのか、知らなかった
ところで手続き型言語において、手続き順を無視して処理されるstatementなんて存在するの?

650 = :

今日のググルのトップは背景に写真でてますが、
ブラウザの描画範囲を縮小拡大したりサイズかえると画像もリサイズされます。
あれはどのようにやるのでしょう?
ブラウザの描画領域がかわったことを検出できるイベントなんてありましたっけ?
あと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一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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