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

このエントリーをはてなブックマークに追加
1Name_Not_Found
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。
  回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止ではありませんが、ライブラリスレで聞くとより回答を得やすいかもしれません。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
2Name_Not_Found:2014/03/16(日) 10:00:37.66 ID:???
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
3Name_Not_Found:2014/03/16(日) 10:04:28.42 ID:???
■前スレ
+ JavaScript の質問用スレッド vol.113 +
http://toro.2ch.net/test/read.cgi/hp/1386098775/

■過去スレ全集
http://www2.atpages.jp/mirror/2ch/javascript/
http://usamimi.info/~mirrorhenkan/2ch/javascript/ (閲覧のみ)

■テンプレ案
http://jsfiddle.net/fH4cC/31/show/

■関連スレ
ECMAScript デス 4
http://toro.2ch.net/test/read.cgi/tech/1325448978/
【jQuery】JavaScript ライブラリ総合質問所 vol.3
http://toro.2ch.net/test/read.cgi/hp/1369444026/
【WHATWG】HTML5 Part6【W3C HTML WG】
http://toro.2ch.net/test/read.cgi/hp/1393153279/
Webサイト制作初心者用質問スレ part239
http://toro.2ch.net/test/read.cgi/hp/1393828207/
CSS初心者スレッド=12th=
http://toro.2ch.net/test/read.cgi/hp/1343429848/
Canvasについて語ろう
http://toro.2ch.net/test/read.cgi/hp/1305093769/
4Name_Not_Found:2014/03/16(日) 10:05:37.14 ID:???
■主要FAQ (全部は http://fiddle.jshell.net/vSqKr/33/show/ )
Q1. 別窓・フレーム内容やローカルファイルを読み書きしたいのですが…
A1. 別サーバのページやファイルの内容はセキュリティ制約でアクセス不可です。
Q2. document.write()でページ内容を追加したいのですが…
A2. 一度表示完了後にwriteするとページ内容が消去されます。DOM等別手段を。
Q3. table内容のinnerHTMLやDOMでの変更がうまく行かないのですが…
A3. IEではtable/tbody/trのinnerHTML書き換え不可です。DOMを使いますが、
  DOMの場合tableの直下にはtbody要素が(作らなくても)あることに注意。
Q4. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A4. 「document.forms.myform.elements[変数名].value」でどぞ。
  JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
  グローバル変数はwindowのプロパティなので「x」と「window['x']」も。
Q5. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A5. 取得には document.defaultView.getComputedStyle() を使う必要あり。
  IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q6. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A6. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
Q7. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
  「"...this..."」とか「function(){...this...}」ではうまく行きません。
A7. 実行時にthisが別のものを指してしまってる。以下のようにthisを束縛保存。
  「function(x){return function(){...x...};}(this)」
Q8. input type="file"の値を設定(参照)できないのですが…
A8. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q9. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A9. コード実行時点でHTMLがそこまで読まれてない。window.onload 中でやるとか。
5Name_Not_Found:2014/03/16(日) 10:06:14.90 ID:???
■各種仕様 ( http://fiddle.jshell.net/vSqKr/33/show/#Link も参照 )
◆ Standard ECMA-262
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ (ECMAScript 3 和訳)
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://people.mozilla.org/~jorendorff/es6-draft.html (ECMAScript 6 有志HTML版)
http://kangax.github.io/es5-compat-table/ (ECMAScript 5 compatibility table)
http://kangax.github.io/es5-compat-table/es6/ (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)
◆ Document Object Model (DOM) / CSS Object Model (CSSOM)
http://www.hcn.zaq.ne.jp/___/WEB/DOM4-ja.html (DOM Standard (DOM4) 和訳)
http://www.w3.org/TR/DOM-Level-3-Events/ (DOM3 Events)
http://www.w3.org/TR/uievents/ (UI Events)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-ja.html (CSSOM 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-view-ja.html (CSSOM View Module 和訳)
◆ その他のWeb関連仕様
http://domparsing.spec.whatwg.org/ (DOM Parsing and Serialization - innerHTML等)
http://www.hcn.zaq.ne.jp/___/WEB/XHR-ja.html (XMLHttpRequest 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/File_API-ja.html (File API 和訳)
http://www.whatwg.org/specs/ (WHATWGの仕様一覧)
◆ MDN (Netscape/Mozilla)
https://developer.mozilla.org/ja/docs
◆ JavaScript Garden (ja)
http://bonsaiden.github.com/JavaScript-Garden/ja/
◆ JSON (JavaScript Object Notation)
http://www.json.org/json-ja.html
◆ MSDN Library
http://msdn.microsoft.com/ja-jp/library/yek4tbz0.aspx (JavaScript)
http://msdn.microsoft.com/ja-jp/library/cc427807.aspx (JScript)
http://msdn.microsoft.com/ja-jp/library/cc409712.aspx (DHTML)
6Name_Not_Found:2014/03/16(日) 11:17:27.26 ID:???
前スレより引用。

> 989 Name_Not_Found sage 2014/03/15(土) 19:13:55.27 ID:???
> hrefプロパティとhref属性は別物のようですが
> プロパティと属性の違いは何ですか?
属性はHTMLの用語。
プロパティはJavaScriptの用語。
hrefプロパティはDOM規定のIDL属性だが、そもそもhref属性値を返すプロパティとしたは定義されていない。
img要素のsrcプロパティも同様だし、他全てのプロパティで個別に定義されているから、DOM規定を読むといい。
7Name_Not_Found:2014/03/16(日) 11:27:25.90 ID:???
前スレより引用。

> 993 Name_Not_Found sage 2014/03/16(日) 01:34:52.82 ID:???
> >>992
> aタグ同士の同一性チェックではなく、
> URL自動リンク時の、a要素とリンク文字列の同一性チェックです
そもそも「リンク文字列が同一である必要がないのではないか」ということなのたが。
http://example.comhttp://example.com/ は同じ場所を示すが、別と見なす必要があるとして理由は何なのだろうか。
8Name_Not_Found:2014/03/16(日) 12:49:21.70 ID:???
> 972 :Name_Not_Found:2014/03/15(土) 04:22:29.64 ID:???
> /が付くか付かないかを判定する必要があるのですか?

> 974 :Name_Not_Found:2014/03/15(土) 04:24:11.42 ID:???
> >>972
> 答えはイエスです

> 985 :Name_Not_Found:2014/03/15(土) 11:52:49.09 ID:???
> >>970
> しかし、hrefプロパティで困る状況は全く思いつかない
> 具体的にどうして困っているのか、補足が欲しい

> 987 :Name_Not_Found:2014/03/15(土) 16:12:32.72 ID:???
> >>985
> hrefが勝手に/を付けるので困るのは、aタグの同一性チェックのためです
> 完全に同じかを知りたかったので

この人とは会話が噛みあわない歯がゆさを感じた
質問テンプレに目的・意図を説明する項目を追加してほしいと思っていたけど無意味なのかな
9Name_Not_Found:2014/03/16(日) 13:22:24.08 ID:???
>>8
わかってないのはお前だと思うよw
10Name_Not_Found:2014/03/16(日) 13:38:59.47 ID:???
>>9は分かったの?じゃあ教えてよ
11Name_Not_Found:2014/03/16(日) 14:36:59.16 ID:???
だから、a要素と文字列の同一性チェックだろ?
12Name_Not_Found:2014/03/16(日) 15:10:10.46 ID:???
どうやら私は違う星にきていたようですさようなら
13Name_Not_Found:2014/03/16(日) 15:39:25.57 ID:???
>>8
実装の方法を聞いてるだけなので
答えるのが面倒くさかったのです
「それ聞く必要ある?」というのが正直なところです
複雑な事情があるのにそれをすべて書くのはあまり意味がないでしょう
機能に局限して質問し回答する方がこのスレには相応しいと思いますよ
14Name_Not_Found:2014/03/16(日) 15:49:00.61 ID:???
だれか言えよw

>>1おつ
15Name_Not_Found:2014/03/16(日) 15:58:18.92 ID:???
>>13
じゃあ「言いたくないです」と一言言ってください
質問を理解してくれない人だと勘違いしてしまいます
やらなくてもいいことをやっている気がしたので聞いていたのです
まさに「それ聞く必要ある?」状態でした
16Name_Not_Found:2014/03/16(日) 15:59:14.26 ID:???
rangeについてですが、見た目上は同じ位置なのに、boundaryは異なることがあります
<span>hoge</span><a>moge</a>
こういったdom構造があった時
「hogeを持つテキストノードの終端」
「spanとaの間」
「mogeを持つテキストノードの先端」
の見た目上の位置は同じになります
これでは扱いにくいので、
見た目上同じboundaryの場合は一つのboundaryに正規化したいと思います
その際domツリーで見た時に一番rootに近いboundaryを得たいと思います
この例の場合は「spanとaの間」です
このように与えられたboundaryを正規化する関数を書きたいのですが
どうすればいいでしょうか?
17Name_Not_Found:2014/03/16(日) 16:10:26.57 ID:???
>>10
お前、ホント馬鹿だな。
A要素のhref属性から取得した文字列が
ソースコードの文字列と一致するか調べる時に
hrefから取得した文字列の最後に/がついていたりついていなかったりしたら
比較がコケるじゃん。そんなことも分からないの?
18Name_Not_Found:2014/03/16(日) 16:16:41.43 ID:???
>>13
> 機能に局限して質問し回答する方がこのスレには相応しいと思いますよ
この言葉は「聞かれた質問にだけ答えろ」ということでしょうか?そう解釈して話を続けます
ここは質問スレです 初心者が質問することも多いと思います
そのような方が考えだした方針が必ずしも最善であるとは思えません
他にもっと良い方針があったらそちらを教えるべきでしょう
逆に自分の方針が最善だと自信を持って言える方にこのスレッドは不要でしょう
19Name_Not_Found:2014/03/16(日) 16:18:58.45 ID:???
>>17
それは比較の仕方がホント馬鹿ですよ
20Name_Not_Found:2014/03/16(日) 16:21:32.39 ID:???
>>19
おや? やっと意味がわかったんですか。
質問に答えられたということは、意味がわかったということですね。
21Name_Not_Found:2014/03/16(日) 16:22:15.17 ID:???
>>19
意味がわかったのなら、馬鹿じゃない比較方法も
答えましょうよw
22Name_Not_Found:2014/03/16(日) 17:14:53.28 ID:???
>>13
> 複雑な事情があるのにそれをすべて書くのはあまり意味がないでしょう
それならば、始めから背景を説明すべきだろう。
あなたの考える実装方法が目的に即してないかもしれない、と考えて代替案を示すのはよくある事。
それをしないなら、質問者と永遠に答えのない不毛な議論を繰り広げる事もある。

> 「それ聞く必要ある?」というのが正直なところです
それを聞く必要がない、と判断出来るだけの情報がなかったから質問したのだが…。
答えるのが面倒なら質問されない工夫をした方がいいと思う。
率直にいってしまえば、「DOM 仕様を理解してない人が理解している人に『聞く必要がない』とか、偉そうな事をいえるのか?」というところだが。
23Name_Not_Found:2014/03/16(日) 17:44:53.21 ID:???
前スレ>>950です、レスありがとうございました
プロトタイプベースの書き方について調べてみようと思います
24Name_Not_Found:2014/03/16(日) 19:04:31.16 ID:???
584 :578:2014/03/15(土) 19:58:34.60 ID:???
ググったらわかった。

585 :Name_Not_Found:2014/03/16(日) 13:09:38.99 ID:???
なんで聞く前にググらないんだろ

586 :Name_Not_Found:2014/03/16(日) 13:29:48.93 ID:???
最終的にググって自分で見つけることになったとしても
書き込んでいれば、誰かが代わりにググってくれるかもしれない。
運がよければ、自分の時間を省ける。

589 :Name_Not_Found:2014/03/16(日) 14:37:54.29 ID:???
>>587
忙しいんですよ。他にやることがある。
他のやることをやっている間に
他人が調べてくれたら超ラッキーw

592 :Name_Not_Found:2014/03/16(日) 17:51:02.84 ID:???
うん。だから「自分で調べましたがわかりませんでした」って
定型文を入れるようにしているよ。
25Name_Not_Found:2014/03/16(日) 19:06:59.20 ID:???
>>16
<a></a> の中を指しているboundaryの正規化は
<a>の前か</a>の後ろか?どちらにするか定義する必要がある

(他にも<a></a><b></b> の</a><b>の狭間のboudaryの正規化は
そのままにするのか<a>の前か</b>の後にするのか?)

結局は「後ろへの正規化」と「前への正規化」の二種類の処理が必要になるだろう
boudaryのoffsetが 0 かノードの長さ(文字数または子ノードの個数)
に等しいときはboudaryを親ノードに移す等々
26Name_Not_Found:2014/03/17(月) 01:49:26.36 ID:???
>>25
なるほど、要素が空の時はそうなりますね
同一階層ならなるべく前方、階層が異なるなら階層が浅い方、というルールでいこうと思います
ありがとうございました
27Name_Not_Found:2014/03/17(月) 02:15:27.95 ID:???
urlをhttp://example.com/#/dir1/dir2/
のようにしようと思い
location.href='#/dir1/dir2/';
を使っていたのですがsafariでやると貼っているadsenseのページが表示されてしまいました
この方法以外にハッシュを変える方法はあるのでしょうか?
safariに関しては諦めるべきなのでしょうか?
28Name_Not_Found:2014/03/17(月) 19:15:41.72 ID:???
>>27
ぐぐれば解決します
29Name_Not_Found:2014/03/17(月) 20:01:14.81 ID:???
ググれば解決って言ってる奴アホだろ
このスレがネットにおける知の最高峰ならともかく
そうでないならググれば解決するだろ
そしてもちろんそうではないのだから、何も言ってないのと同じ
30Name_Not_Found:2014/03/17(月) 20:14:59.88 ID:???
いやこれはググるべき問題だよ。
31Name_Not_Found:2014/03/17(月) 20:18:13.63 ID:???
「ぐぐれ」が許されるのは
答えることすら馬鹿らしいような常識的な質問の場合だけだ
それは質問と回答のやりとり自体が無駄だからな
そうでないなら「ぐぐれ」という書き込みこそ無駄で害悪だと心に留めよ
32Name_Not_Found:2014/03/17(月) 20:23:24.00 ID:???
ぐぐれ
33Name_Not_Found:2014/03/17(月) 20:23:47.92 ID:???
>>31
そこまでわかっていて「答えることすら馬鹿らしいような常識的な質問」であるとは思わないのか
https://www.google.co.jp/search?q=url+%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5+javascript+%E5%A4%89%E6%9B%B4&ie=UTF-8
34Name_Not_Found:2014/03/17(月) 20:26:27.19 ID:???
いや俺は質問者じゃねーから
35Name_Not_Found:2014/03/17(月) 20:29:10.29 ID:???
だいたいsafariだけ挙動が違うとか
それだけでもう一般的じゃない問題だろ
safariで検証なんて普通しないし
36Name_Not_Found:2014/03/17(月) 20:36:41.02 ID:???
>>34-35
回答にいちゃもんつけるなら、その回答の正当性も検証すべきだろ
ぐぐってみて解決するか確認もしないとか頭おかしい

> だいたいsafariだけ挙動が違うとか
> それだけでもう一般的じゃない問題だろ
おまえJavaScriptでハッシュ値を変更したことないだろ
location.hrefでハッシュ値変更が本当に正しいのか調べてからものをいえ
37Name_Not_Found:2014/03/17(月) 20:39:50.85 ID:???
俺は知らねーから。
俺が知らないってことは一般的じゃない
はい論破
38Name_Not_Found:2014/03/17(月) 20:44:31.61 ID:???
だいたい質問者の問題の定義が間違ってるなら
「ぐぐれ」などと言わずに定義が間違ってることを指摘しろよ
そうでないならsafariとかadsenseとかを検索語に含んで無駄に遠回りするだろうが。
問題定義の間違いはググりでは分かりにくい問題なのだから
A級以上の回答者ならそれを指摘する。
ぐぐれなどと抜かすのはC級回答者。
39Name_Not_Found:2014/03/17(月) 20:46:50.92 ID:???
いいからぐぐれ
40Name_Not_Found:2014/03/17(月) 20:47:47.87 ID:???
お子様理論か
自分の無知を棚に上げて他人を非難するとか、恥の上塗りすぎて同情できないな
41Name_Not_Found:2014/03/17(月) 20:56:14.55 ID:???
>>39-40
こんな情報量ゼロの書き込みしかできないのはD級回答者
42Name_Not_Found:2014/03/17(月) 20:56:52.39 ID:???
>>37
おまえはロンパールームに行ってろ
43Name_Not_Found:2014/03/17(月) 20:59:02.16 ID:???
>>41
おまえはだまっとけ
44Name_Not_Found:2014/03/17(月) 21:00:33.17 ID:???
JavaScriptをかじったことのある人ならlocation.hrefでおかしいとすぐ気がつく問題だしなあ
C級とかランク付する人は前からいたけど、この程度の知識がない人が他人を評価しても説得力がないなあ
45Name_Not_Found:2014/03/17(月) 21:06:33.81 ID:???
この問題がわからない人はD級回答者
自分のレベルがわかって良かったね
46Name_Not_Found:2014/03/17(月) 21:07:35.16 ID:???
>>27です
スレを荒らしてしまってすみませんでした
window.location.hash = hash;
で行けました
47Name_Not_Found:2014/03/17(月) 21:11:07.18 ID:???
location.hrefによるハッシュへの移動
なんて今まで書いたことねーな
縦に長いページが好きじゃないし。
よほど本当に一般的なテーマ以外は一般的など言えないということ。
質問スレでぐぐれとか言うやつほど低能、これはマジ。
48Name_Not_Found:2014/03/17(月) 21:11:59.01 ID:???
>>46
あなたのせいではないから気にしないで
用語はわかっているみたいだから、今後はぐぐって解決出来るか試してみてね
49Name_Not_Found:2014/03/17(月) 21:13:23.96 ID:???
>>46
これからもどんどん質問して下さい
舐めた回答者がいるけどお許しを
俺がちゃんと教育しておきますので
5027:2014/03/17(月) 21:16:16.70 ID:???
>>47
hashへの移動ではなくurlに表示されるhashを変えたかっただけなんです

>>48
window.location.hashを見つけた時イベントを監視とかばかりだったのでそういう使い方が出来ないと決めつけてしまったのが悪かったようです
ありがとうございました
51Name_Not_Found:2014/03/17(月) 21:28:21.94 ID:???
上記のような認識上の誤りはググりで解決するのは困難で時間がかかる
1時間のググリ行為で分からないことが、他人の一言で一瞬で分かったりする
そのための質問スレ
これからも良いスレにしていきましょう
52Name_Not_Found:2014/03/17(月) 21:30:55.01 ID:???
ところで、>>6-7の質問者はどこにいったんだろう?
53Name_Not_Found:2014/03/17(月) 21:31:37.89 ID:???
javascriptと全く関係ない質問ですが
このスレを建てた>>1さんって運営側の人だったりします?
topのjavascript質問スレのURL切り替わるのがやたら早かった気がするので
54Name_Not_Found:2014/03/17(月) 21:36:11.56 ID:???
>>53
前スレ埋まる時にいたけどそんなに新スレ立つのが早い印象はなかったなあ
timestampを見る限りでは約3時間30分経過してるね
55Name_Not_Found:2014/03/17(月) 21:45:39.07 ID:???
各種総合スレ
『Webサイト制作初心者用スレッド』
『CSS・スタイルシート質問用スレッド』
『JavaScriptの質問用スレッド』
上の2つはURLが古いままなのにここだけ切り替わっているのが気になりました
新スレたってから切り替わるまで若干の時間差もあって自動ではなさそうでしたし
56Name_Not_Found:2014/03/17(月) 22:31:00.58 ID:???
>>55
「運営が一個人として新スレを立てた」「偶然、運営の巡回時刻とスレ立て時刻が重なった」のどちらかじゃないでしょうか
スレ立て時刻は「09:59:54.28」と程良い朝の時間帯ですし

憶測でしかないので正確には運営にどうぞ
ここで議論しても答えは出ないでしょうから
57Name_Not_Found:2014/03/17(月) 22:59:38.39 ID:???
議論するつもりはないです
1さんに聞いてるだけです
58Name_Not_Found:2014/03/18(火) 05:37:38.58 ID:???
>>6
見逃してました
htmlの属性とjsのプロパティで微妙に違ってるんですね
ありがとうございました
59Name_Not_Found:2014/03/18(火) 06:32:42.16 ID:???
まあ、相対URLいれてみりゃわかるんでね?
60Name_Not_Found:2014/03/18(火) 11:30:27.93 ID:???
スレ立てた >>1 ですが、スレを立てたら2ch運用情報板の「ローカルルール
リンク先更新スレッド」でリンク先の変更を依頼してます(いつもやってます)。
今回はそこの管理人さんがたまたまあっという間に対応してくださったという
感じです。こういうのって2chの常識だと思ってたんだけどな、、、
http://qb5.2ch.net/test/read.cgi/operate/1390381836/l50
61Name_Not_Found:2014/03/18(火) 19:36:46.03 ID:???
a = b;
c = d;
みたいな短い代入も一行ずつ分けて書いた方がいいんですか?
62Name_Not_Found:2014/03/18(火) 21:56:21.81 ID:???
>>61
どうせ後からいろいろ弄ったりするなら
最初から分けて書いた方が編集は楽、という理屈
63Name_Not_Found:2014/03/18(火) 23:32:21.29 ID:MSLQAcu6
以下のhtmlに埋め込んだjavascriptは、フォームのテキストエリアに入力した文字列を
表示するものですが、1文字のタイムラグが生じてしまいます。
例:フォーム部「abcd」→表示部「abc」

何が問題なのか教えていただけないでしょうか。
環境は、OSX10.9.2 ,Google Chrome 33.0.1750.149 です。
どうぞよろしくお願いします。
------------------
<html>
<head>

<form action="" onkeypress="change_hoge(this)">
<input type="text" name="puri">
</form>
<p id="hoge"> --- </p>

<script>
function change_hoge(formobj){
var v = formobj.elements["puri"].value;
document.getElementById("hoge").innerHTML = v;
}
</script>

</body>
</html>
64Name_Not_Found:2014/03/19(水) 00:09:26.32 ID:???
onkeypressをonkeyupにすればいいかと
6563:2014/03/19(水) 00:48:53.88 ID:???
>>64
うまくいきました!
3時間近く悩んでたので、うれしいです。ありがとうございました!
66Name_Not_Found:2014/03/19(水) 15:50:30.67 ID:CPf3AEkO
<object></object>部分にマウスが乗ったときだけ、windowのスクロールを無効にするにはどうすればいいでしょうか?
67Name_Not_Found:2014/03/19(水) 20:25:15.30 ID:???
>>66
マウスが乗った時/出た時に
スクロールのイベントハンドラを登録/解除+
イベントハンドラでイベント伝播を停止させる
ではだめなのか?
68Name_Not_Found:2014/03/20(木) 04:42:54.63 ID:???
>>62
なるほど
ありがとうございました
69Name_Not_Found:2014/03/20(木) 18:18:32.34 ID:YHPekIcS
  ★★★タンカー一杯分の砂鉄を海にまけば、地球は寒冷化する★★★
  http://jbbs.livedoor.jp/bbs/read.cgi/study/3729/1226114724/5

↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
  この掲示板に優秀な書き込みをして、総額100万円の賞金をゲットしよう!(*^^)v
70Name_Not_Found:2014/03/20(木) 19:39:39.43 ID:BDZLgWz0
オブジェクトのメソッドの中に共通する処理があるのでそれを関数にしようと思うんだけど
その関数はどこに書けばいいの?

あまり良い例は思いつかないんだけど例えば
var obj = {
name : 2ch,
welcome : function() {
alert(this.name'へようこそ');
console.log('成功');
},
intro : function() {
alert(this.name'はネットサービスです');
console.log('成功');
}
};

この中の「console.log('成功')」の部分を関数化するとしてその関数はどこに書けばいいのか教えてくらはい
71Name_Not_Found:2014/03/20(木) 20:20:17.86 ID:???
intro : function() {
alert(this.name'はネットサービスです');
this.log();
},

log: function() {
console.log('成功');;
},
72Name_Not_Found:2014/03/20(木) 20:25:26.05 ID:BDZLgWz0
>>71
どもです
何でもメソッドにぶっこんでいいんですね
共通する関数が元のオブジェクトとあまり関係なかったりするとメソッドにいれていいものか考えていたので
73Name_Not_Found:2014/03/20(木) 21:05:13.78 ID:BDZLgWz0
あぁあとまだあるんですけど
>>70のプログラムでconosle.log(変数)だった場合、この変数はプロパティとして定義するべきなんですかね
もちろんこのメソッドを呼び出す時はあらかじめ変数を定義している予定なんですけども
もし定義されていなかったらこのメソッドを直接呼び出した時に「そんな変数はねーよ」とエラー吐かれるので
そんなものをオブジェクトのメソッドとして書いていいのかどうなんですかね
7473:2014/03/21(金) 00:30:54.81 ID:yE069RGW
自己解決
「JavaScript プライベートメソッド」でググったら色々方法でてきました
75Name_Not_Found:2014/03/21(金) 06:56:35.46 ID:???
「IE7以下」をJSで検出するにはどうしたらいいですか?
76Name_Not_Found:2014/03/21(金) 07:18:26.34 ID:???
なんとwhileが複数の引数を取れることを発見しました

var a = 3;
var b = 10;
while (a--,b--){
console.log(a+'/'+b);
}

引数のすべてがfalseになるまでループします
これは常識なのでしょうか?
普通知らないですよね?
77Name_Not_Found:2014/03/21(金) 07:24:22.20 ID:???
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/while

複数の引数が取れるなんて全然書いてませんし。
これは裏技なのでしょうか?
78Name_Not_Found:2014/03/21(金) 08:11:18.35 ID:???
var a = 10;
var b = 3;
でやってみよう
79Name_Not_Found:2014/03/21(金) 11:26:59.72 ID:???
>>76
それ複数の引数じゃなくて、一つの引数だよ。

たとえばこういうのと同じ。
var a = 1, 2, 3;
// a = 3

わかりにくくければこうやって見るとか。
var a = alert(1), alert(2), alert(3), 9;
// a = 9

,は頭から順番に実行して最後の値を返すカンマ演算子。

var a = 1 + 2 + 3; // プラス演算子
var a = 1 , 2 , 3; // カンマ演算子

関数だとカンマは引数リストの区切りとしてみなされるけど、
whileは関数ではないので、カンマ演算子としてみなされる。
80Name_Not_Found:2014/03/21(金) 14:12:14.93 ID:???
カンマ演算子の存在意義ってあるんだろうか
while( の中 ) で変数使っても別にスコープが限定されるわけじゃないしなぁ
81Name_Not_Found:2014/03/21(金) 14:42:18.46 ID:???
forでよく使うじゃん。
82Name_Not_Found:2014/03/21(金) 14:51:17.91 ID:???
a = 1, b = 2;
なんてCでもJSでも書く癖が付いたら、Javaで出来なくて愕然とした。
83Name_Not_Found:2014/03/21(金) 15:02:25.31 ID:???
var b = 1;
var a = 0, b;

// a = 0
なんで
84Name_Not_Found:2014/03/21(金) 15:04:38.21 ID:???
var a = 1, 2, 3;
Exception: missing variable name
85Name_Not_Found:2014/03/21(金) 15:14:54.89 ID:???
var a=1, b=2, c=3; // 変数宣言 OK
var a=1, b, c=3; // 変数宣言 OK bに初期値入れてないだけ
var a=1, 2, c=3; // 変数宣言 NG 2は変数名じゃない

a=1, 2; // ただの代入
86Name_Not_Found:2014/03/21(金) 15:18:57.00 ID:???
var a = 0, b; // 変数a, bを宣言している
var a = (0, b); // 変数aのみ宣言
87Name_Not_Found:2014/03/21(金) 15:49:27.44 ID:???
Cでもカッコは必要だな
88Name_Not_Found:2014/03/21(金) 16:02:07.67 ID:???
>>81
for も実は要らない子じゃね?
for in の類いは別として
while だけで十分
89Name_Not_Found:2014/03/21(金) 17:12:37.45 ID:???
カンマは演算子だったのですか〜
初耳でした
ありがとうございました
90Name_Not_Found:2014/03/21(金) 17:28:44.21 ID:???
>>81
よく勘違いされるが、それはカンマ演算子ではない
91Name_Not_Found:2014/03/21(金) 17:52:54.00 ID:???
>>90
いいえ。あきらかにカンマ演算子です。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Comma_Operator
> 単一の式でなければならない位置で複数の式を記述したい場合に、カンマ演算子を使うことができます。
> この演算子が最も良く使われるのは、for ループで複数のパラメータを与えたい時です。
92Name_Not_Found:2014/03/21(金) 19:12:55.61 ID:???
すべてのコードをカンマ演算子で区切って書いたらかっこいいのでは?
93Name_Not_Found:2014/03/21(金) 19:58:30.24 ID:???
whileでもそうだがforで「++i」と「++j」を同時にしたい時は便利
本当はその他の部分でも使いたいけど、変数宣言や関数宣言の一部であるカンマとヒットするし、
優先度が最低の関係から、例えば配列を受け取りpopして返す関数書くときに

f = ary => ary.pop(), ary とは書けない、これは
f = (ary => ary.pop()), ary という扱いになってしまう、それでも
f = ary => { ary.pop(); return ary } より
f = ary => ( ary.pop(), ary ) の方が分かりやすいかもしれないが括弧で魅力が半減してしまう

また、ES7から入るdo式に活躍の場が奪われるかもしれない
f = ary => do { ary.push(); ary }
そうなると実際に使うのは精々
i = 0, j = 1, k = 2 みたいな場面か
94Name_Not_Found:2014/03/21(金) 20:08:25.51 ID:???
>>92
すべての処理をカンマ区切りでreturn文に並べてるコード今日見かけた
95Name_Not_Found:2014/03/21(金) 20:30:55.65 ID:???
>>94
かっこええええ
96Name_Not_Found:2014/03/21(金) 21:53:49.40 ID:nv3gxO9L
HTML上のモジューリングはModuleタグを使うことでほぼ決まった。
https://github.com/dherman/web-modules/blob/master/module-tag/explainer.md
おめでとう。。。!おめでとう。。。!
97Name_Not_Found:2014/03/21(金) 23:47:37.06 ID:???
別にそれでいいように思うけど何か問題があるのか?
98Name_Not_Found:2014/03/22(土) 00:04:17.42 ID:???
>>91
MDNの説明が誤っている。確認するならECMAScriptを参照すべき。
http://www.ecma-international.org/ecma-262/5.1/#sec-12.6.3

for文における変数宣言は IterationStatement の一部であり、VariableDeclarationListNoIn である。
VariableDeclarationListNoIn は Variable Statement でも使われるが、Expression ですらない。
従って、>>85もカンマ演算子ではない。
99Name_Not_Found:2014/03/22(土) 00:44:45.77 ID:???
var がないときは?
100Name_Not_Found:2014/03/22(土) 00:53:48.64 ID:???
>>98
>>85はカッコがないからカンマ演算子でないのはもう指摘済みだろ
101Name_Not_Found:2014/03/22(土) 01:01:56.49 ID:???
85の最後はカンマ演算子
,より=の方が演算子としての優先順位が高いってだけで
102Name_Not_Found:2014/03/22(土) 01:48:26.64 ID:???
>>85の最後のはカンマ演算子で、
aに2が入る ことからもわかるように、
優先順位はカンマ演算子の方が高いよw
103Name_Not_Found:2014/03/22(土) 01:50:31.88 ID:???
a = 1, 2; a === 1 だよ
(a = 1, 2) === 2 ではあるけどね
カンマが一番優先順位が低い
104Name_Not_Found:2014/03/22(土) 01:57:42.31 ID:???
firefoxでの実行結果。
明らかだよな?

>>> a = 1, 2;
2
105Name_Not_Found:2014/03/22(土) 01:58:14.82 ID:???
>>103
実行してから言ったほうがいいよw
106Name_Not_Found:2014/03/22(土) 02:00:14.45 ID:???
a = 1, 2; a; で実行してみw
107Name_Not_Found:2014/03/22(土) 02:01:26.35 ID:???
108Name_Not_Found:2014/03/22(土) 05:09:53.00 ID:???
ユーザエージェントのチェックではなく
ブラウザの挙動をチェックしてIEのバージョンを知りたいのですが
どうやればいいですか?
109Name_Not_Found:2014/03/22(土) 05:11:33.83 ID:???
ちなみにコメントを使ってバージョンを判定する方法だと
エミュレーションしてる時も実ブラウザのバージョンが出てしまい駄目でした
110Name_Not_Found:2014/03/22(土) 07:01:21.16 ID:???
contenteditableな要素にフォーカスし、
カーソルキー下を押したイベントを発生し、
キャレットを下に動かしたいです

http://jsbin.com/detutavo/1/edit

focusし、keydownをfireしてみましたが、キーイベントに反応しません
何故でしょうか
111Name_Not_Found:2014/03/22(土) 09:04:25.09 ID:???
$.eventって使えんの
112Name_Not_Found:2014/03/22(土) 10:59:12.43 ID:???
http://jsbin.com/detutavo/5/edit

ハンドラをセットし、triggerを$testにしたら、ハンドラは呼ばれてました
しかしキャレットは動かず。
triggerはハンドラに対してのもので、
ブラウザのデフォルト操作の層にまでは飛んでいかないのでしょうか?
もし飛んでいくなら、コードでイベントを発火して勝手にクリックさせたりも出来てしまいますし
113Name_Not_Found:2014/03/22(土) 11:11:56.00 ID:???
もしそこまでとんでいくなら勝手にファイル消すプログラムとか
作れそうだな
114Name_Not_Found:2014/03/22(土) 11:20:13.98 ID:???
mousemoveを発生できたらマウスが勝手に動くのかってことになるし・・
115Name_Not_Found:2014/03/22(土) 11:40:26.88 ID:???
マウスに関しては中間の層があるように見えるけど
キャレットにはなさそうだな
116Name_Not_Found:2014/03/22(土) 22:32:04.69 ID:???
>>108の件ですが
http://tanalin.com/en/articles/ie-version-js/
に書かれているようなオブジェクトの有無の判定でチェックできました
ありがとうございました
117Name_Not_Found:2014/03/22(土) 23:24:30.00 ID:???
ie11のドキュメントモードを5にしても、
本来ないはずのXMLHttpRequestオブジェクトが存在します
そのためバージョンチェックが失敗します
IE6以下用のエミュレータとしてはIE11は使えないのでしょうか
118Name_Not_Found:2014/03/22(土) 23:34:18.35 ID:???
しょゆこと
119Name_Not_Found:2014/03/23(日) 01:36:35.99 ID:???
じゃあietesterってやつにします
ありがとうございました
120Name_Not_Found:2014/03/23(日) 07:36:38.60 ID:???
今までIE11のエミュレータで検証してたのですが
ietesterで観たら、かなり違いますね〜
エミュレータ全然駄目だこれ
121Name_Not_Found:2014/03/23(日) 09:17:00.02 ID:???
IE6〜IE8なんてもう今月で切っていいでしょ
122Name_Not_Found:2014/03/23(日) 18:41:20.21 ID:???
シェアがあるなら仕方ないです
123Name_Not_Found:2014/03/23(日) 19:28:25.60 ID:???
シェアねーなー
124Name_Not_Found:2014/03/24(月) 00:15:34.85 ID:???
125Name_Not_Found:2014/03/24(月) 02:23:29.16 ID:???
ie.modernというサイトをMSが用意してることを知りました
各IE用のバーチャルマシンイメージを提供しています
たかがブラウザを使うのにいちいちバーチャルマシンを起動しなくちゃいけないこと自体が
全然モダンじゃないんだが?という気はしますが
一番ちゃんと検証できそうです
126Name_Not_Found:2014/03/24(月) 02:27:26.53 ID:???
modern.ieでした
127Name_Not_Found:2014/03/24(月) 03:31:07.26 ID:???
「たかがブラウザ」ではないんだよね。
ブラウザほど大きなアプリはないよ。

今のブラウザはOSに近い機能を持ってる。
ChromeOSとかFirefoxOSとかあったしね。
128Name_Not_Found:2014/03/24(月) 03:48:08.37 ID:???
ブラウザとOSとの接合という失策のカバーをしてるだけなのに
ドヤ顔でモダーンとか言われてもと思いますね
IE11のイメージをwindows以外用に提供しているので、その点はモダーンでいいですが
129Name_Not_Found:2014/03/24(月) 14:33:35.07 ID:???
バーチャルマシーンを起動しないと、まっさらな状態で検証出来ないだろ
130Name_Not_Found:2014/03/24(月) 18:07:41.01 ID:???
>>125
エミュレータじゃ再現しない問題ってのがあるからなぁ。
実際の環境でテストするのは大事だよ。
131Name_Not_Found:2014/03/24(月) 22:35:11.61 ID:???
最近はIEよりもAndroidのブラウザのテストが大変
同じWebkitベースと言っても、
細かいバージョンが違うわ、バージョンが同じでも
機能を有効にしていたり無効にしていたりで、
機種ごとに違うバージョンがある感じ
132Name_Not_Found:2014/03/25(火) 00:02:13.63 ID:???
実体参照ノードを作りたいのですが
http://www.w3schools.com/jsref/met_document_createentityreference.asp
ここにあるように
document.createEntityReference('amp');
とやっても、documentにcreateEntityReferenceメソッドがないと言われます
どこが間違っているのでしょうか?
133Name_Not_Found:2014/03/25(火) 00:11:30.88 ID:???
よく見たらこのサイトはEntityをEnityとtypoしてますね
しかしEntityにしてもやはり同様のエラーがでます
134Name_Not_Found:2014/03/25(火) 00:15:21.60 ID:???
>>132-133
対象ブラウザは何だろうか
少なくとも、Google Chrome v33.0.1750.154 m には Document.prototype.createEntityReference が存在しないのでサポートしてないと思われる
http://www.y-adagio.com/public/standards/tr_dom2_core/core.html#i-Document
135Name_Not_Found:2014/03/25(火) 00:21:15.43 ID:???
ありがとうございます
使っているのはchromeです
もともとはcreateTextNodeで実体参照が作れない(&まで実体参照に変換されてしまう)ことから
このメソッドを発見したのですが
ないのなら実体参照をノード操作で作成するにはどうしたら良いのでしょう
136Name_Not_Found:2014/03/25(火) 00:27:18.56 ID:???
>>135
innerHTML, outerHTML, insertAdjustHTML で実装できなくはないが、そもそもHTML文字実態参照を使う必要性が想像できない
あなたの期待する文字はUnicodeエスケープシーケンスでは指定できないのだろうか
137Name_Not_Found:2014/03/25(火) 01:27:10.33 ID:???
ダブルクォートを含む文字列のあるjsonデータを
配列に入れてサーバとやりとりしたいのですが
次のようなことをやっていますがparseでエラーになってしまいます。

(1)送りたいjson
[{"value":"\"aaaa\""}]
→ダブルクォートを含んだ文字列「"aaaa"」をDBに入れたい

(2)JSON.stringify後、サーバに送られるもの
[{\"value\":\"\\\"aaaa\\\"\"}]

(3)DBに登録されたもの
[{"value":"\"aaaa\""}]

(4)DBからajaxで取得したもの
[{\"value\":\"\\\\\"aaaa\\\\\"\"}]
→これをparseするとエラー

(5)アンエスケープする
[{"value":"\"aaaa\""}]
→これをparseするとエラー

もうどうすればいいの!!!!????
stackoverflowあたりも見ているのですが、良い解決に行き当たりません。。。
138Name_Not_Found:2014/03/25(火) 04:52:10.35 ID:???
>>136
<div>&nbsp;</div>
のようなものをノード操作で作成したかったのですが、
同様のHTMLをエレメントに入れてノード構成を見たところ、
スペースをdataに持つ普通のテキストノードだったので、何かが間違っていたようです
ありがとうございました
139Name_Not_Found:2014/03/25(火) 05:30:32.41 ID:???
スペースと&nbsp;を混在させたテキストノードを
charCodeAtで確認したところ
&nbsp;はノーブレークスペースで、通常の半角スペースとは別物だと分かりました
なのでテキストノードでokでした
ありがとうございました
140Name_Not_Found:2014/03/25(火) 09:02:58.02 ID:???
jqueryのonpasteの挙動がどうもおかしいので検証したところ
IE8以下では、onpasteハンドラはデレゲート出来ないようです
つまり
$(document).on('paste','#test',fn);
のような書き方が出来ず
$('#test').on('paste',fn);
のような書き方でないと動きません
しかし他のブラウザでは問題ないので、忘れてデレゲートに書き直してしまいそうです
どうしたらいいですか
141Name_Not_Found:2014/03/25(火) 18:25:00.59 ID:???
忘れないようにしましょう
142Name_Not_Found:2014/03/25(火) 20:34:19.90 ID:???
よくわかんないけど、対応してないjqueryのバージョン使ってるとかないよね?
143Name_Not_Found:2014/03/26(水) 14:04:05.74 ID:???
http://code.jquery.com/jquery-latest.js
をつこうてるのでそれはないかと。
忘れないようにコメントに書いておくことにしました
ありがとう御座いました
144Name_Not_Found:2014/03/26(水) 15:35:55.32 ID:MxRKm7VX
>>137
クォートなどを実体or数値文字参照に変えることは出来んの?
145Name_Not_Found:2014/03/27(木) 02:20:16.69 ID:???
誘導されて来ました、よろしくお願いします
この、auのサイト(PC版)
http://www.au.kddi.com/
みたいに折りたたみコンテンツを作りたいんですけど
なかなかに難しく、お力添えいただけませんでしょうか
(コンテンツスライダーの下部分)

これを実現するとしたらどうすればいいでしょう?
タブの切り替えなら腐る程あるんですけど
そうじゃない、こういった感じのが実装できない…
「タブで切り替え方式」のタブをもう少しリッチにできれば理想的なんです
タブを画像と少しのテキストにできる、みたいな
コンテンツをクリックしたら、違うところが開くみたいな。
タブの中をもう少しだけリッチにしたいだけで詰んでしまいます…

コンテンツスライダ−でもないし、アコーディオンでもないし、
こういうの何という名前なのかもわからないので検索もできないんです
146Name_Not_Found:2014/03/27(木) 04:46:25.52 ID:PlonpcmL
折りたたみって何のことを指していっているの?
147Name_Not_Found:2014/03/27(木) 06:01:02.56 ID:???
148Name_Not_Found:2014/03/27(木) 06:06:04.10 ID:???
jqueryのkey関係のイベントで、keyCodeがwhichに入っていますが
なんでwhichなんですか?
英語の意味的におかしくないですか?
149Name_Not_Found:2014/03/27(木) 06:11:34.02 ID:???
150Name_Not_Found:2014/03/27(木) 09:57:11.24 ID:???
http://jsbin.com/ridufogu/1/edit

selectionからrangeを取得した後、
selectionからrangeをすべて削除し、
その後取得したrangeをselectionに再び設定しています。
通常見た目は同じになるはずです。
前方から後方に文字列選択をした場合、想定どおりに動作しますが、
後方から前方に文字列選択をしていくと、
キャレットが動くたびに範囲選択がリセットされてしまいます(chromeで確認)
後方から前方への選択でも範囲選択状態を維持するようにするにはどうしたらいいでしょうか?
151Name_Not_Found:2014/03/27(木) 10:01:12.33 ID:???
もう一度確認したら後方から選択でもリセットされませんでした
ちょっと保留にして下さい
すみません
152Name_Not_Found:2014/03/27(木) 10:09:58.82 ID:???
http://jsbin.com/ridufogu/1

jsbinのエディタ画面では、リセットされない場合もあるようですが、条件が分かりません
独立させて表示するとリセットされます
153Name_Not_Found:2014/03/27(木) 13:35:49.06 ID:???
>>148
なぜここで聞くのですか?
名前の由来は制作者本人しか知り得ない情報だと思いませんか?
154Name_Not_Found:2014/03/27(木) 13:51:57.60 ID:???
which key is pressed ?
のwhich
155Name_Not_Found:2014/03/27(木) 13:56:03.75 ID:???
keyCodeもしくはcharCodeということでwhichなのでは
ちなみにjQueryオリジナルではなくブラウザ実装が由来
156Name_Not_Found:2014/03/27(木) 14:33:07.81 ID:PlonpcmL
>>153
まあそうなんだろうけど、その手の豆知識的なことは
意外とおまえ様たちのような人しか知らなかったりする

ような気もする
157Name_Not_Found:2014/03/27(木) 14:42:02.30 ID:???
固有名詞ならともかくメソッド名はそんな創意あふれる名前じゃなくて
他人にも理由の分かる名前だろう
158Name_Not_Found:2014/03/27(木) 20:54:42.29 ID:???
その文句ならSafariのせいだ。
Appleにいえ。
159Name_Not_Found:2014/03/27(木) 22:14:20.34 ID:???
>>144
レスありがとう。
それやるのが簡単なんだけど、DBには入力値のまま入れて
DOMにセットするときにエスケープしたいのよね。。。

jsonの値として、エスケープしたjson配列が入ってたり
するのも要因だと思うんで、とりあえずいろいろ試行錯誤してる。
160Name_Not_Found:2014/03/27(木) 22:17:48.80 ID:PlonpcmL
>>159
DBにはそのまま入ってて構わんけど
JSONに加工するときにエンティティ化すればいいじゃん
161145:2014/03/27(木) 23:48:23.82 ID:???
>>146
レスが遅れて申し訳ありません
どう表現していいかわからず、折りたたみという言葉を使いました
説明が難しいのでauのサイトのコンテンツスライダ−部の下あたりにある
メニュ−の「+メニュ−を開く」という箇所をクリックしてみていただけませんでしょうか
(「スマ−トフォン・携帯電話」「インタ−ネット」「コンテンツ」…という部分です)

こういったデザインをどう表現するのかもわからないのでググっても
なかなか参考となるようなペ−ジが見つからず、せめてググるヒントでもいただければと思い、
質問させていただきました。
レスをいただきありがとうございました
162Name_Not_Found:2014/03/28(金) 00:01:37.63 ID:???
>>159
根本的に間違ってるよ。

まず変数やデータベースに格納するときはエスケープしない。
そのまま代入する。

したくないとかじゃなくて、そのまま代入しなければいけないの。
これをしないからどうするかわからなくなるんだよ。
163Name_Not_Found:2014/03/28(金) 00:15:04.38 ID:5UCJKFK8
>>161
あーごめん、気づかなかったわ

ただのタブ切り替えで、切り替えエフェクトのついでに
▲を動かすだけでいいじゃん
164145:2014/03/28(金) 01:11:23.32 ID:???
>>163
レスありがとうございます。
きっとそうなんだと思います
ただそれが難しくて…
どこか参考になりそうなペ−ジはご存知ないでしょうか

最初はいわゆるアコ−ディオンコンテンツを、テーブルを使い4つに並べてみたのですが
クリックして展開したコンテンツの幅もテーブル幅内(ページの4分の1)になってしまうのが痛く、
展開したコンテンツはページ幅をフルに使いたくてその方法を探してました
おっしゃる通り、「タブで切り替え方式」でいいのだと思うのですが、タブを少しリッチにしようとするだけで
急に難しくなったてしまうのです
165Name_Not_Found:2014/03/28(金) 01:28:16.77 ID:???
プロトタイプでいろいろ試行錯誤してたがクロージャベースが一番楽だな
プライベート変数も親クラスコンストラクタの呼び出しも何も悩まない
166Name_Not_Found:2014/03/28(金) 01:47:17.19 ID:5UCJKFK8
>>164
タブなんて難しくないない

タブとボックスのオブジェクト = {
  タブ : タブの要素,
  ボックス : タブを押すと表示される要素,
  表示 : ボックスを表示するアニメの関数,
  非表示 : ボックスを非表示する 〃
}

こんな感じのオブジェクトをタブの数ぶん作っておいて
現在表示しているオブジェクトを変数に入れておいて

タブ切り替え関数( 新しく表示するオブジェクト ){
  現在表示してるオブジェクト.非表示();
  新しく表示するオブジェクト.表示();
  現在表示しているオブジェクト = 新しく表示するオブジェクト;
}

こんな関数を作って表示するボックスを切り替える
ほんで、各オブジェクトに大して

タブ.on('click' , function(){ タブ切り替え関数( オブジェクト ); });

ってすればすぐできるよ
167Name_Not_Found:2014/03/28(金) 01:54:26.59 ID:???
>>160>>162
レスありがとう。

ちゃんと処理確認したら、
JSONをDBに突っ込む際に文字列化するために使ってるライブラリが
あるんだけど(JavaのJackson)、こいつが勝手に?ダブルクォートとかを
エスケープしちゃって
{"key":"value"} → {\"key\":\"value\"}
みたいな状態になってた。。。

JSONをstringifyしたままDBに投入するようにしたら解決した。
重ね重ねありがとう。
168145:2014/03/28(金) 02:29:40.65 ID:???
>>166
親切なレスをいただきありがとうございます
大きなヒントをいただきました
今回いただいたレスを元に、色々とググって勉強してみたいと思います
ありがとうございます
ちなみにこれって簡単なほうなんですね?…うぅ
169Name_Not_Found:2014/03/28(金) 03:21:25.00 ID:???
>>166
> こんな感じのオブジェクトをタブの数ぶん作っておいて
いらんいらん。 おもいっきり手抜きだが、こんなんでいい。

<!DOCTYPE html>
<html>
<head>
 <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
 <script>
  $(function() {
   $('input').on('change', function() {
    var index = $(this).index();
    $('.page').fadeOut(1000);
    setTimeout(function() {
     $('.page').eq(index).fadeIn(1000);
    }, 1000);
   })
  })
 </script>
 <style>
  .page { border: 1px solid black; height: 10em; display: none; }
 </style>
</head>
<body>
 <fieldset id="tabs">
  <input type="radio" name="tab"><input type="radio" name="tab"><input type="radio" name="tab">
 </fieldset>
 <div id="pages">
  <div class="page">1</div><div class="page">2</div><div class="page">3</div>
 </div>
</body>
</html>
170Name_Not_Found:2014/03/28(金) 03:26:12.91 ID:???
>>168
まず、タブをリッチのリッチの意味が、画像を意味するのなら
CSSでやる。見た目は基本CSSでやる。

アニメーションもCSSでできなくもないのだが、
古いブラウザとか考えたらjQueryを使うのが楽。

>>169の例ではタブ=ラジオボタンで実装したが別にリンクでもいい。
(ラジオボタンでもCSSでデザインを調整すればタブになる。
現在表示のページ情報をJavaScript側で保持しなくて良くなるので
ラジオボタンを使うという方法もよく使われる)
171145:2014/03/28(金) 07:47:58.33 ID:???
>>169
>>170
ありがございます!
わざわざありがとうございます
書いていただいたコード、超参考にさせていただきます
めっちゃ助かりますこれ!

タブをリッチに、の意味はタブを画像にしたい、みたいな意味でした
察していただきありがとうございます
おっしゃる通りjqueryで実装したいと思っておりまして、良いプラグインがあればなーと思っておりました
ありがとうございます
恐縮しております
172Name_Not_Found:2014/03/28(金) 09:19:11.63 ID:???
textareaなどの編集領域ではCTRL+Zでundoできますが
このundoデータにJavaScriptでアクセスすることは出来ないのでしょうか?
173Name_Not_Found:2014/03/28(金) 10:44:40.68 ID:???
できません
174Name_Not_Found:2014/03/28(金) 10:45:59.79 ID:???
編集前の値なら取得できます
175Name_Not_Found:2014/03/28(金) 10:54:14.15 ID:???
Web制作板でJavaScriptを使って〜jQueryを使って〜っていう質問でか
わいそうに思うのはプログラミングができないから、簡単な事なのに
誰が作ったかもしれないプラグインを探していること。

プラグインを探してもぴったり合うのなんて見つかることはまず無いし。
プラグインを使わなくてもほんの数行で作れるようなことまでプラグインを探している。
まともなプラグインを作れる人はほんの数行で作れるのわかってるから
そんな簡単なものにわざわざプラグインを作らないんだよ。

簡単なものにプラグインを作っている人のコードはすごく冗長。
なぜなら「作るのが大変だからプラグインにした」つもりでいるから。
スキルが低いから、そのプラグインは汎用性がなく改良もしにくい。

でも簡単な物も作れない人は、そんなどこの誰が作ったかもしれないような、
質の悪いプラグインを探して使って思ったことが出来ないと嘆いて無駄に時間を潰している。

自分でjQuery使えるようになれよ。
176Name_Not_Found:2014/03/28(金) 11:16:21.02 ID:???
>>175
冗長っていうのは、最後の一行だけで十分なのに、長々と説教しちゃうってことですか?
177Name_Not_Found:2014/03/28(金) 12:44:17.37 ID:???
文章がおかしいな
プログラム勉強しはじめた中学生くらいだろう
178Name_Not_Found:2014/03/28(金) 13:20:21.66 ID:???
jsbinもjsfiddleもIE7では使えません
IE7でも使える類似サービスはありませんか?
179Name_Not_Found:2014/03/28(金) 13:26:56.99 ID:???
IE7を捨てる
180Name_Not_Found:2014/03/28(金) 14:48:06.47 ID:???
自分で作る(割と真面目に)
ニーズの少ないところに対応するなら、ある程度は自分で作れないと厳しいよ
181Name_Not_Found:2014/03/28(金) 16:40:49.33 ID:???
プログラミング言語はbit演算が早いイメージがあるのですが
大量のtrue/falseのフラグを取り扱い、全部true/falseであるかどうか、trueがいくつあるか
といった処理もbit演算を行ったほうが早い場合はあるのでしょうか?
182Name_Not_Found:2014/03/28(金) 17:34:32.14 ID:???
>>181
大量のって言っても、例えば32ビットでいくつのTrue False扱えるか分かってんだろうね?
183Name_Not_Found:2014/03/28(金) 18:19:24.12 ID:???
>>181
その用途のために、いくつかの言語はBitSetみたいな名前のクラスを標準で備えていて、無限ビット持てる
184Name_Not_Found:2014/03/28(金) 18:23:43.45 ID:???
クライアントの要望を叶えたいなら自分で作れないとダメだろうね。
185Name_Not_Found:2014/03/28(金) 18:29:50.48 ID:???
>>181
早いかもしれないけど、君には無理。
技術が高人が、効率よく使って初めて効果が出る。
君が作ると逆に遅くなるだけだろう。

何時間も時間と金を作って、0.01秒速くなって
それで誰が喜ぶかを考えよう。
186Name_Not_Found:2014/03/28(金) 18:32:36.44 ID:???
jsonから読み込んだurlが入った変数link、
代入されたurlが仮にhttp://www.test.jp/abcdefgだったとします
このうちabcdefgだけ取得したいのですが、
var id = link.replace('http://www.test.jp/','')
上記だとlinkに代入されたurlがそのまま帰ってきてしまいます。
どうすればうまくいきますか?
187Name_Not_Found:2014/03/28(金) 18:40:58.43 ID:???
>>186
何か勘違いしているよ
ちゃんと期待通りに動く
188Name_Not_Found:2014/03/28(金) 20:09:42.24 ID:???
$('.classname')
にハンドラを付けても、その時点で存在しないエレメントにはハンドラが付かないようです
デレゲートも出来ない場合は、
エレメントを作成した時点でハンドラを付け外しするしかないでしょうか?
189Name_Not_Found:2014/03/28(金) 20:39:45.94 ID:???
>>188
onでは用を足せない状況?
190Name_Not_Found:2014/03/28(金) 20:43:07.38 ID:???
>>188
> $('.classname')
> にハンドラを付けても、その時点で存在しないエレメントにはハンドラが付かないようです
ハンドラの付け方を間違えているのでは?
https://api.jquery.com/on/
191Name_Not_Found:2014/03/28(金) 21:13:40.69 ID:???
パフォーマンスの改善は兎にも角にもプロファイラで計測だ
余程の天才でもないかぎりしょうもない高速化は考えるだけ無駄だ
192188:2014/03/28(金) 23:18:16.70 ID:???
>>189
onで付けているのですが・・
>>190
間違ってはないと思います

http://jsbin.com/tosizeli/1/edit

赤い四角だけある時にクラス名でクリックハンドラをセットし、
その後同クラス名で緑の四角を動的生成します
動的生成した緑の四角をクリックしても何も起きません
193Name_Not_Found:2014/03/28(金) 23:45:38.78 ID:???
答えたくてしょうがないんだが、
他人のやりとりに横から入って
話をかっさらっていくのは
マナー違反かねぇ?
194Name_Not_Found:2014/03/28(金) 23:47:02.49 ID:???
時になんでデレゲートできないの?
195Name_Not_Found:2014/03/29(土) 00:49:05.05 ID:???
IE7でonpasteがデレゲートできないからです
バブリングの関係と思いますが
196Name_Not_Found:2014/03/29(土) 01:59:11.89 ID:???
jqueryでイベントハンドラを付ける
→jqueryの外でDOMエレメントを削除
とするとメモリーリークになりますか?
jqueryでDOMを削除すればおそらくイベントハンドラも外されると思いますが
jqueryの外で削除した場合はjquery側でそれを検知できないので危険な感じします
197Name_Not_Found:2014/03/29(土) 02:04:20.39 ID:???
自分でやってみればいいのに
198Name_Not_Found:2014/03/29(土) 02:10:43.38 ID:???
メモリーリークかどうかどうやって判断するんですか?
199Name_Not_Found:2014/03/29(土) 02:24:49.11 ID:???
メモリリークの何が問題か考えて見ればわかること。
200Name_Not_Found:2014/03/29(土) 02:25:57.16 ID:???
おっと、ここプログラミングできない
Web制作板か(笑)

自分が使えないものを無理して使わなくていいよ。
単に「俺には出来ない。その力はない」って自分と客に言えばいいだけ。
201Name_Not_Found:2014/03/29(土) 02:40:18.23 ID:???
レベルの低い煽りだなぁ
カスは黙ってじっとしとけよ
202Name_Not_Found:2014/03/29(土) 02:41:51.03 ID:???
分かるなら答えればいいし分からないなら黙っておけ
この簡単なことが何故理解できないのか
203Name_Not_Found:2014/03/29(土) 02:55:52.57 ID:???
ならわかるから、
黙ってなくていいってことだなw
204Name_Not_Found:2014/03/29(土) 03:19:06.15 ID:???
ヒントあげような?
難解も
205Name_Not_Found:2014/03/29(土) 03:19:15.26 ID:???
分かるなら大人しく答えるか、答えたくないなら去れや
カスが
206Name_Not_Found:2014/03/29(土) 03:31:40.67 ID:???
1)疑問がある→質問する→答える→第三者がその情報を利用できる
2)疑問がある→自己解決

1の価値創出が2よりもずっと多いということを理解できない奴は馬鹿
第三者のほとんどにとって分かりきった質問なら生産量は逆転するが
そうでないほとんどの場合は1の方が大きい
いわば質問とは生産なのだ
「自分で試せ」などというのは愚か者の言うこと
207Name_Not_Found:2014/03/29(土) 03:35:38.89 ID:???
役に立たない講釈ありがとう(笑)
208190:2014/03/29(土) 08:06:14.28 ID:???
>>193
個人的には答えてもらって構いません.。
片手間に回答しているだけですし、今もすぐに回答できる状況ではないので。
(やっぱり、間違ってる気がするなあ。この人は>>190のURLを読んでない気がする。)
209Name_Not_Found:2014/03/29(土) 09:42:18.11 ID:???
間違っているも何も動く実例を上げているのですが・・
デレゲートという言葉を使っているのだから
初心者じゃないことは分かってもらえると思います
リファレンスレベルの問題じゃないんですよ
210Name_Not_Found:2014/03/29(土) 09:47:55.36 ID:???
一応書いておきますが、
デレゲートすればクラス名指定でもハンドル出来るのは分かってるんです
しかしデレゲート出来ないから困っているわけです
211Name_Not_Found:2014/03/29(土) 11:26:38.25 ID:???
じゃあはい。
http://jsbin.com/tosizeli/2/edit
http://jsbin.com/tosizeli/3/edit
http://jsbin.com/tosizeli/4/edit

onpasteってのは書いた後に聞いたので
onpasteではやってない。
212Name_Not_Found:2014/03/29(土) 11:56:30.97 ID:???
動的生成後にハンドラを付けてますね
ハンドラを設定した後に要素を生成したら動かない、という問題です
213Name_Not_Found:2014/03/29(土) 12:36:26.42 ID:???
本来ならデレゲートするのが正道なので
IE7という古いブラウザでonpasteというマイナーなイベントを使えるようにはしていないという
バグみたいなものなのでしょう
この種のバグに対してスマートな代替案なんてあるわけもないので
一つ一つ付け外しします
ありがとうございました
214Name_Not_Found:2014/03/29(土) 13:17:29.55 ID:???
リファレンス読んでたら

> In Internet Explorer 8 and lower, the paste and reset events do not bubble. Such events are not supported for use with delegation, but they can be used when the event handler is directly attached to the element generating the event.

っていう文章を発見できてたろうにな
215Name_Not_Found:2014/03/29(土) 13:38:09.13 ID:???
じゃあバグではなく正常動作だったんですね
ありがとうございました
216Name_Not_Found:2014/03/29(土) 13:51:33.75 ID:???
真性のバカだったかw
217Name_Not_Found:2014/03/29(土) 13:57:27.27 ID:???
は?何言ってんだお前
一つ一つ付け外しするしかないですか?って言って実際にそうだったって分かっただけのことじゃん
どこから馬鹿という結論が出てくんだよボケ
218Name_Not_Found:2014/03/29(土) 14:04:06.65 ID:???
バカは自分がバカだと分からないもんだよ
219Name_Not_Found:2014/03/29(土) 14:06:57.90 ID:???
だから馬鹿なんて言っちゃったのか
カスが
220Name_Not_Found:2014/03/29(土) 14:26:53.94 ID:???
domの配列があり、そのすべてをjqueryで削除するとします
ループで回して
$(dom).remove();
とすると、domの個数分jqeuryのセレクタが作成されます
これはコスト的に若干抵抗があるので
$(domArray)
みたいに一度にdomの配列を渡せればと思うのですが、
そういうことは出来ますか?
221Name_Not_Found:2014/03/29(土) 14:27:34.00 ID:???
なぜ自分で試さないのか
222Name_Not_Found:2014/03/29(土) 14:55:18.44 ID:???
まぁ無理だろうと思っていて、じゃあそうすればいいよ?という意味があるからです
むろん出来れば嬉しいですが。
223Name_Not_Found:2014/03/29(土) 14:56:00.99 ID:???
>>185
どっちが早いか検証コードを書いていて気づいたのですが
flagが全てtrue/falseになっているかどうかの判定だけならカウンターで実装できますね

質問したのは
if(a && b && c && d && e && f && g && h ...) return true;
みたいな判定処理をどうにか早く、短くしたかったのです
224Name_Not_Found:2014/03/29(土) 14:57:59.42 ID:???
だめだろうと思いながら試したところ出来ました\(^o^)/
ありがとうございました
225Name_Not_Found:2014/03/29(土) 15:00:15.81 ID:???
いやいや、そこはドキュメントをみとこうよ
226Name_Not_Found:2014/03/29(土) 15:03:16.99 ID:???
ドキュメント読むのなんて面倒くさい
227Name_Not_Found:2014/03/29(土) 15:34:26.91 ID:???
&&と||は短絡評価してくれる
228Name_Not_Found:2014/03/29(土) 16:09:14.61 ID:???
>>223
まず、そんなフラグ変数がたくさんあるのが異常。
配列を使っていれば変数は少ないはず。

次に速度が速いのとコードが短いのはイコールではない。
短くて遅いコードもあるし、速くするために長いコードを書くこともある。

そしてそのhまで変数がある長いコードは配列にしておけばlodashにある関数を使って
if ( _.all([a, b, c, d, e, f, g, h]) ) return true;
= return _.all([a, b, c, d, e, f, g, h])

とかける。最初から配列使っていれば、 return _.all(array); でよい

>>225
ここにいるのはプログラマじゃないので、ドキュメントを読む習慣がない。
だからいつまでたっても使えるようにならない。
ましてや英語だから絶対に読まない。
JavaScriptに振り回されてるだけのかわいそうな人達。
229Name_Not_Found:2014/03/29(土) 22:18:32.18 ID:???
>>210
デレゲートって .delegate() の事だったのか
ようやく理解できた
ちゃんと正式名称で書かないと誤解を生むよ
230Name_Not_Found:2014/03/29(土) 22:48:42.43 ID:???
デ「リ」ゲートじゃないの?
231Name_Not_Found:2014/03/30(日) 00:09:18.76 ID:???
詳しい方お願いします。
TypeScriptでプログラムを組んでいまして、tmlibというライブラリを使っています。
そのライブラリのエントリポイントが
tm.main(function () {
...
});
なのですが、このfunction(){...}の中が実行されなくて困っています。

以下がtmlibの中身の一部のコードを抜き出したものです。
(function() {
_mainListners = [];
tm.main = function(fn) { _mainListners.push(fn); };
var _main = function() {
for (var i=0,len=_mainListners.length; i<len; ++i) {
_mainListners[i]();
}
_mainListners = [];
};
window.addEventListener("load", function() {
_preload();
_main();
}, false);
})();

(続きます)
232Name_Not_Found:2014/03/30(日) 00:10:46.57 ID:???
(続きです)

利用側のTypeScriptのコードは -module amd オプションでコンパイルしていまして、
それらのコンパイルしたモジュールをRequireJSでロードしています。

で、コンパイルしたamdモジュールの中では

define(["require", "exports", "system"], function(require, exports, amdSystem) {
var main;
(function (main) {
window.tm.main(function () {
alert("呼ばれないんだなこれが");
});

})(main || (main = {}));
});

としているのですが、当然ながら、window.tm.main(...)が呼ばれるまえに、tmlibの方のloadイベントハンドラの方が先に呼ばれてしまい、
_mainListners配列の中身が空( function(){alert("呼ばれないんだなこれが")}がまだ入っていない )なので、
tm.mainの中の処理を実行させることができません。

なんとか解決策はないでしょうか? お詳しい方、よろしくお願いします。
233Name_Not_Found:2014/03/30(日) 02:28:53.06 ID:???
TypeScriptスレに行ってみたら
234Name_Not_Found:2014/03/30(日) 09:47:49.52 ID:???
>>230
その通りだと思う
多分、質問者は読み方を知らなかったのだろう
235Name_Not_Found:2014/03/30(日) 11:38:26.33 ID:???
>>234
カタカナの時点で誤りだろう
極論すればすべての日本語は誤解を呼ぶ
236Name_Not_Found:2014/03/30(日) 12:03:56.88 ID:???
極論にも程がある。
237Name_Not_Found:2014/03/30(日) 12:07:48.32 ID:???
極論だが、確かに関数名をカタカナ表記することはまずないな
配列は「アレイイズアレイ」を使って判定できます、とはいわないだろう…
238Name_Not_Found:2014/03/31(月) 12:54:56.92 ID:???
子要素でイベントを受け取りたくないとき(擬似的に子要素を無視したいとき)
event.target = event.target.parentNodeみたいに書き換えるのは問題ありますか?
239Name_Not_Found:2014/03/31(月) 14:04:05.15 ID:???
デレゲート、と書かれているのを見てdelegateのことだと理解できない人は
コーダーにはなれても、その先に進むのは難しそうな印象
240Name_Not_Found:2014/03/31(月) 14:17:51.44 ID:???
>>239
デレゲート→デリゲート(delegate)はすぐ思い至ったが、.delegate() に至るまではjQueryを知らない俺は時間がかかったな
概念的な意味のデリゲートだと思ってECMAScript等の仕様書を探してた
そんな俺は先に進むのが難しい?(出来れば理由も詳しく)
241Name_Not_Found:2014/03/31(月) 14:32:16.21 ID:???
>>240
それはわかる
自分も概念としてのなのか、jQのことなのかは文脈から判断した

世の中、自分の欲しいもの、必要なものを
完全に間違わず正しい言葉で伝えられる人って
もんのすごく少ないじゃんって話です
242Name_Not_Found:2014/03/31(月) 15:07:36.74 ID:???
また頓珍漢なところにつっこんでる無能がいるな
デレゲーションで検索したら普通に使われている言葉だと分かるぞ
ググれよ
243Name_Not_Found:2014/03/31(月) 15:09:30.72 ID:???
君は関数ではない。人とコンピュータをつなぐインターフェイスだ
顧客は君に決して正しい値を入力しないが、必ず正しいソリューションを要求する



的なことを、昔の外人上司に言われたのを思い出した
244Name_Not_Found:2014/03/31(月) 15:12:39.11 ID:???
>>230 >>234
こいつら自演だろ?
このレベルの馬鹿が二人もいるとは思えない
245Name_Not_Found:2014/03/31(月) 15:14:36.98 ID:???
「自分が使っている以外の読み方もされているかもしれない」という想像もできない奴は
いろいろ終わってると思うぞ
246Name_Not_Found:2014/03/31(月) 15:22:58.24 ID:???
スパゲッティ
247Name_Not_Found:2014/03/31(月) 15:24:51.57 ID:???
>>241
> 世の中、自分の欲しいもの、必要なものを
> 完全に間違わず正しい言葉で伝えられる人って
> もんのすごく少ないじゃんって話です
それもわかるが、齟齬が生じるとわかっていながら質問時に正式名称を使わないのはどうなの、とも思う
少なくとも俺は正式名称を使うようにしてるなー
248Name_Not_Found:2014/03/31(月) 15:27:16.78 ID:???
>>247
それもわかるっす
正しい用語を使うのは、コミュニケーションするうえですごく大事だと思う

> 齟齬が生じるとわかっていながら

たぶんわかってないんだろうなー、と
249Name_Not_Found:2014/03/31(月) 15:29:08.82 ID:???
>>242
なぜ「デレゲート」ではなく「デレゲーション」なの?
「デレゲート」でぐぐってみた?
https://www.google.co.jp/search?q=%E3%83%87%E3%83%AC%E3%82%B2%E3%83%BC%E3%83%88&ie=UTF-8
250Name_Not_Found:2014/03/31(月) 15:54:13.69 ID:???
>>248
> たぶんわかってないんだろうなー、と
あー、わかってないのか
>>243もそれらしきことを言ってたが、質問者を「プログラマ」としてではなく「顧客」と思えば腹もたたないかな
251Name_Not_Found:2014/03/31(月) 15:56:48.73 ID:???
>>1
>(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。

これって大事だね
252Name_Not_Found:2014/03/31(月) 15:57:38.58 ID:???
厳密に言えばカタカナも含むほとんどの訳語は正式名称でない
厳格さを追求するならすべての単語に英語で注釈を付ける必要がある

厳格さ(strictness)を追求するならすべて(every)の単語(terms or phrases)に英語(the language used in the original specification)で注釈(annotation or prose)を付ける(attach)必要がある(required)
253Name_Not_Found:2014/03/31(月) 15:59:55.65 ID:???
>>249
ぐぐってみたら

DeleGate
読み方:デレゲート

佐藤豊によって開発された国産のプロキシサーバー。非商用もしくは評価目的での利用なら
無償で利用することができる。
プロキシサーバーはクライアントとサーバーの間に位置し、サーバーへのアクセスを
代理(Proxy)することにより、通信の中継、通信内容のキャッシュなどを行う。
これにより、LAN内のホストを外部に公開したり、SSLに対応していないサーバーを
暗号化したりなど、さまざまな利用方法がある。
DeleGateは、HTTP、FTP、NNTP、SMTP、IMAP、LDAP、TELNET、SOCKS、DNS、SSL、TLSなど、
数多くのプロトコルをサポートしている。

関連見出し
squid

関連URL
DeleGate Home Page(http://www.delegate.org/delegate/
254Name_Not_Found:2014/03/31(月) 16:31:04.34 ID:???
>>253
意図的にデレゲートと読んでるサイトを選択してるね

Google検索結果の1番目はデリゲート、括弧内でデレゲートにも触れてる
http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%AA%E3%82%B2%E3%83%BC%E3%83%88_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
delegateが存在する C# ではデリゲートだからカタカナ読みとしてはデリゲートが正しい(正式名称を探すなら一次情報を参照すべき)
http://msdn.microsoft.com/ja-jp/library/ms173171.aspx

デリゲート 約 202,000 件
https://www.google.co.jp/search?q=%E3%83%87%E3%83%AA%E3%82%B2%E3%83%BC%E3%83%88&ie=UTF-8
デレゲート 約 3,820 件
https://www.google.co.jp/search?q=%E3%83%87%E3%83%AC%E3%82%B2%E3%83%BC%E3%83%88&ie=UTF-8
255Name_Not_Found:2014/03/31(月) 16:35:39.93 ID:???
>>253
というか、それプロクシサーバの名前でしょ?
プログラミング上のdelegateとどういう関係があるの?
256Name_Not_Found:2014/03/31(月) 16:37:28.59 ID:g/rPs4dy
html5,CSS3とjavascriptでスマホ用webアプリを作りたいと思っています。
機能としては、ブラウザで以下のようなことしたいです

1)スマホの端末内から画像を選択して、画面に表示する
2)それを指でピンチアウトしたら拡大、その逆で縮小
3)2本指でグルッとまわしたら回転
4)さらに、任意の範囲で長方形・正方形にトリミング

想定してるブラウザはスマホ用safari、Fx、chromeです
どんな技術を使ったら良いんでしょうか
ざっと調べたらネイティブアプリ関連のページは引っかかったんですが、
jsでというのは見つけられませんでした
何か最適なプラグインやフレームワークはないでしょうか
ご意見お願いします
257Name_Not_Found:2014/03/31(月) 16:40:22.13 ID:???
wikipediaにもデリゲート(delegate、デレゲート)って書いてるじゃねーか
つっこみどころにセンスがなさすぎてこれだけで無能って分かるわ
ギリシャって書いてる人にギリシアだろって言うがごとき愚行
あほらしすぎてコメントすらしたくないレベル
馬鹿は去れ
以上
258Name_Not_Found:2014/03/31(月) 16:45:38.18 ID:???
>>254,255
ググったらついでにこんなのみつけちった、ってだけだよう
すまんこすまんこ
259Name_Not_Found:2014/03/31(月) 16:46:01.12 ID:???
キヤノンのことをキャノンって書くと怒られるよ♪
260Name_Not_Found:2014/03/31(月) 16:46:27.19 ID:???
俺「ニケーア公会議」
馬鹿「ニカイア公会議が正式名称だろ」
俺「死ね」
261Name_Not_Found:2014/03/31(月) 16:47:01.82 ID:???
ブリヂストンのことをブリジストンって書くと怒られるよ♪
262Name_Not_Found:2014/03/31(月) 16:54:08.51 ID:???
正式なカタカナ読みなんぞがあるのは固有名詞だけということだな
263Name_Not_Found:2014/03/31(月) 16:58:16.09 ID:???
俺「でれげーと」

英「no no no. delegate.」

俺「でりげーと」

英「no.... you said "ri", we can say "le"」
264Name_Not_Found:2014/03/31(月) 17:02:46.41 ID:???
>>262
違う。外来語として日本語になってるということ
265Name_Not_Found:2014/03/31(月) 17:34:25.01 ID:???
C#を開発したMicrosoftが「デリゲート」と呼称しているのだからC#においては「デリゲート」が正しいんだろうさ
266Name_Not_Found:2014/03/31(月) 17:39:21.71 ID:???
正式名称を調べる為に公式サイトを確認するのは基本
267Name_Not_Found:2014/03/31(月) 17:47:18.96 ID:???
>>264
外来語として日本語になってるとか誰が決めるものでもないだろう
ゆえに正式などと言えるものではなく
ある範囲の集団または文脈で通用する名称に過ぎない

ことを常に踏まえておけばいいだけ
268Name_Not_Found:2014/03/31(月) 17:52:03.85 ID:???
>>267
一般論ではなく、プログラミングにおける正式名称を考えるべきじゃないかと
仕様策定者が日本語でも仕様を書けば、それが正式名称となる
269Name_Not_Found:2014/03/31(月) 18:44:20.93 ID:???
ディスケット
270Name_Not_Found:2014/03/31(月) 19:56:50.41 ID:???
NTTデータ的な文字の読み方を信奉しているところだと
delegateを「り」って読んだら、違ーう!って怒られそうだなあ

まあ掲示板ではdelegateって書けばいいし
$.fn.delegateって書いてくれれば、より伝わりやすいよね
271Name_Not_Found:2014/03/31(月) 20:04:42.22 ID:???
おっさんしつこいで
272Name_Not_Found:2014/03/31(月) 20:07:47.44 ID:???
英語の発音で言えない奴は
低学歴っぽいな。
どうせビニールテープとか
言ってるんだろう?
発音下手すぎw
273Name_Not_Found:2014/03/31(月) 20:09:51.95 ID:???
>>238
event.targetプロパティはreadonlyだから書き換え不可
274Name_Not_Found:2014/03/31(月) 20:29:14.85 ID:???
じゃあ、もう、このスレは、英語が公用語ということで、お願いします。
275Name_Not_Found:2014/03/31(月) 20:32:26.23 ID:???
                     /j
                   /__/ ‘,
                  //  ヽ  ‘, 、
                    //    ‘  ! ヽ        …わかった この話はやめよう
                /イ       ‘, l  ’
               iヘヘ,       l |  ’
               | nヘヘ _      | |   l       ハイ!! やめやめ
               | l_| | | ゝ ̄`ヽ | |〈 ̄ノ
               ゝソノノ   `ー‐’ l ! ¨/
            n/7./7 ∧        j/ /     iヽiヽn
              |! |///7/:::ゝ   r===オ        | ! | |/~7
             i~| | | ,’ ’/:::::::::::ゝ、 l_こ./ヾ..     nl l .||/
             | | | | l {‘:j`i::::::::::::::::`ーr ‘         ||ー―{
              | ‘” ̄ ̄iノ .l::::::::::::::::::::::∧       | ゝ    ‘,
      , 一 r‐‐l   γ /、::::::::::::::::::::::::〉ー= ___  ヘ  ヽ   }
    / o  |!:::::}     / o` ー 、::::::::::::i o ,’:::::::{`ヽ ヘ     ノ
   / o    ノ:::::∧   /ヽ  o  ヽ::::::::| o i::::::::ヽ、 /   /
   /    ノ::::::/    /::::::::ヽ  o  ヽ:::| o {::::::::::::::Υ   /
276Name_Not_Found:2014/03/31(月) 22:20:56.82 ID:???
なぜこの話題でnullが出てこないのか
277Name_Not_Found:2014/03/31(月) 22:32:29.51 ID:???
>>274
fucking English, please.
278Name_Not_Found:2014/03/31(月) 22:36:38.62 ID:???
ギョヱテとは 俺の事かと ゲーテ問い
279Name_Not_Found:2014/03/31(月) 22:41:31.56 ID:???
typeof null === "object" な理由は何なのでしょうか
また、typeof null === "null" に修正予定はありますか
280Name_Not_Found:2014/03/31(月) 23:03:26.89 ID:???
>>279
予定はある
なのでnull判定は関数でも作ってやったほうが将来的にメンテが楽かもね

理由はMDNでも見てもらった方が早いんで詳細は割愛しますが
nullがヌルポだから的な理由
281Name_Not_Found:2014/04/01(火) 00:41:45.60 ID:???
>>280
調べてみるとES6で予定されているとかES6での策定は先送りになったとかありますが、ES7で予定されているのでしょうか

ぶっちゃけ、null判定だけなら arg === null で十分なのであまり困りませんが、Object型の判定が面倒で仕方ありません
Object.isObjectもなぜか削除されたようですし、スマートにObject型を判定する仕様はないものでしょうか
282Name_Not_Found:2014/04/01(火) 00:46:16.96 ID:???
nullやundefinedを上書きするような糞コードが混入する可能性なんて0に等しいから
気にしなくていい
万が一そんなことがあったなら
コードを修正するんじゃなくてそんなコードを書く奴の方を排除すべき
283Name_Not_Found:2014/04/01(火) 01:04:59.19 ID:???
>>281
いつか直そうぜ!ってずっと予定している的な
Object判定といえば、正規表現なんかも変だったりするしね
面倒だね
284Name_Not_Found:2014/04/01(火) 01:17:16.35 ID:wgVf67v5
こういう設計ってありですか?

var A = function() {
this.b = new B();
this.c = new C();
};

var B = function() { this.c = new C(); };
var C = function() {};
285Name_Not_Found:2014/04/01(火) 01:18:44.79 ID:???
>>282
> nullやundefinedを上書きするような糞コードが混入する可能性なんて0に等しいから気にしなくていい
undefinedはともかく、nullはES3の頃から予約語なので上書き不可能だと思っていたのですが、違うのでしょうか
(実際に Google Chrome 33 で上書き不可能でしたが、実装依存?仕様書を読み違えた?)

誤解があるようですが、nullの上書きを気にしているわけではありません
286Name_Not_Found:2014/04/01(火) 01:21:40.91 ID:???
Object 判定なら instanceof Object でいいんでない?
別の環境(フレームやworkerなど)から new されたものだと
偽になることを除いて何か都合が悪い場合ってある?
287Name_Not_Found:2014/04/01(火) 01:24:00.16 ID:???
>>284
Cの汎用性がめちゃめちゃ高いというか
例えば何かの数を数えて減らしたり増やしたりするだけ、とかだったら
そうなっちゃうこともある、気がしなくもなくもない

それだけで一概にはアリともナシとも言えないんじゃなかろか
288Name_Not_Found:2014/04/01(火) 01:24:17.34 ID:???
>>283
> いつか直そうぜ!ってずっと予定している的な
早く直して欲しいですね、本当に…

> Object判定といえば、正規表現なんかも変だったりするしね
実装によって typeof new RegExp === "object" だったり typeof new RegExp === "function" だったりする件でしょうか
あれは new RegExp が RegExp.prototype.exec と同等機能を持つ独自拡張をしている為で "function" を返す Google Chrome が正しかったように思います
[[Call]] を持ちながら "object" を返す Firefox の方が困った仕様だと思っていたぐらいで
どちらにせよ、Object型には違いないので型判定する上では困らないですね
今は該当機能が削除されているので、どちらの実装でも typeof new RegExp === "object" になっているはずです

Object型を判定する手法として「typeof演算子で "obect" または "function" を除く規定文字列を返さない場合」がありますが、将来的に型が増えてtypeof演算子の戻り値が増えた場合に修正が必要になるので好ましくありません
何とかならないものですかね…
289Name_Not_Found:2014/04/01(火) 01:27:48.62 ID:???
>>286
「Object型が Object のインスタンスである」はES仕様で保証されているのでしょうか
私の探し方の問題かもしれませんが、該当仕様を見つけることが出来ませんでした
仕様上問題ない実装にすると>>288の実装になると思っていたのですが…
290Name_Not_Found:2014/04/01(火) 01:38:01.70 ID:???
仕様について知りたいor文句があるなら、ESスレのほうが幸せになれるんでないかい?
(てゆうかむしろ、2chではなく総本山にコミットしたほうがいいんだが…)

こっちはどちらかというと
仕様とブラウザの現在の実装を知った上で
じゃあ実際にJSをどう書いたら良かんべ?ってのが主流だから
291Name_Not_Found:2014/04/01(火) 01:50:24.34 ID:wgVf67v5
>>287
どもども
例えば人というオブジェクトに手があって指があって爪がある場合に
爪にアクセスする時一々手と指オブジェクト経由するの面倒くさいから
人オブジェクトに爪オブジェクトいれちゃえって感じなんだけども
292Name_Not_Found:2014/04/01(火) 01:54:16.10 ID:???
>>290
私も全仕様を知っているわけではなくて新しい仕様を提案できるほどのレベルではないです

> 仕様とブラウザの現在の実装を知った上で
> じゃあ実際にJSをどう書いたら良かんべ?ってのが主流だから
私の知らない仕様を使うことで「こんな書き方も出来るんだぜ」的なアドバイスがもらえたら嬉しいなと思っていました
仕様を知ることが最終目標ではなく、スマートにコードを書くことが目標になります
(先行仕様を知っておけば、既存コードの方針も決めやすいので)
293Name_Not_Found:2014/04/01(火) 01:59:11.96 ID:???
>>291
横から失礼
その例では指に爪があるので人から爪にアクセス可能なのは設計がおかしいと思う
少なくともオブジェクト指向的な考え方ではないね
オブジェクトを抽象化する概念がないなら同一スコープ上に関数を並べているのと変わりない
294Name_Not_Found:2014/04/01(火) 02:09:28.96 ID:???
>>291
それはあかんやつや…
というか

var 人間 = function() {
  this.ゆび = new 指();
  this.つめ = new 爪();
};

var 指 = function() { this.つめ = new 爪(); };
var 爪 = function() {};

var にんげん = new 人間();

ってした時の「にんげん.ゆび.つめ」と「にんげん.つめ」は
constructorが同じだけで、独立した別のオブジェクトなんだから
295Name_Not_Found:2014/04/01(火) 02:44:24.77 ID:wgVf67v5
>>293>>294
なるほど・・・
最初から指と爪に分けるか
指に爪が含まれているなら人からは指にアクセスするべきということか
296Name_Not_Found:2014/04/01(火) 02:57:57.95 ID:H9Bv5BLm
デブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ね
デブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ね
デブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ね
デブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ね
デブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ね
デブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ねデブ豚死ね
297Name_Not_Found:2014/04/01(火) 03:00:51.65 ID:???
テキストのURL該当部分を正規表現でaタグに置換
その後、置換されていない部分に対して置換処理を施す
ってことをやりたいのですが、
正規表現でまだ置換されていないところに対して正規表現を適用するにはどうしたらいいですか?
298Name_Not_Found:2014/04/01(火) 03:06:18.56 ID:???
作った<a>要素でちぎれば、残りのテキストノードだけ取ってこれる
けど、これじゃ重い感じ?
299Name_Not_Found:2014/04/01(火) 03:33:03.47 ID:???
>>297
一括置換すれば、置換されていないところを考える必要はないと思うが
300Name_Not_Found:2014/04/01(火) 08:13:18.24 ID:???
ツンゲートを飛ばしてデレゲートへ行っちゃだめでしょ。
301Name_Not_Found:2014/04/01(火) 09:04:06.99 ID:???
ファイルが大きくなってきて(7000行弱)編集時に重くなってきました
JavaScriptでファイルを分割して編集とかしたことないのですがした方がいいでしょうか?
302Name_Not_Found:2014/04/01(火) 09:36:52.79 ID:???
むしろ分割する意味が分からん
303Name_Not_Found:2014/04/01(火) 10:19:16.54 ID:???
重いからって書いていますが。
PHPのフレームワークだと基本1クラス1ファイルに分けるのでそこまで重くなることはありませんが
JavaScriptでは分けないので大きくなりすぎます
304Name_Not_Found:2014/04/01(火) 10:46:05.65 ID:???
7000行ってすごいな
305Name_Not_Found:2014/04/01(火) 10:47:57.46 ID:???
編集のことだけしか考えないなら分ければいいんじゃない?
306Name_Not_Found:2014/04/01(火) 11:25:22.48 ID:???
そうですね
JavaScriptの大規模開発について詳しい本などあれば教えて下さい
307Name_Not_Found:2014/04/01(火) 11:35:09.36 ID:???
>>302 >>305
今は開発時はメンテナンス性のために分割して作って、
実環境ではgruntなどを使ってビルドし
結合(ついでにminify)した状態にするのが常識

って思ったが、あぁ、ここはWeb制作板か。
ここにいる連中にそんな技術はないだろうなw
308Name_Not_Found:2014/04/01(火) 12:25:57.24 ID:???
>>307
勉強になるが、最後の2行は必要なのか?
309Name_Not_Found:2014/04/01(火) 12:29:27.70 ID:???
gruntってツールを使うんですね
ありがとうございました
310Name_Not_Found:2014/04/01(火) 12:37:40.53 ID:???
今までLL言語しか使ったことないのでビルドをしたことがないのですが
平均的JavaScripterなら簡単でしょうか
311Name_Not_Found:2014/04/01(火) 13:10:26.01 ID:???
> 今までLL言語しか使ったことないので
それは平均未満
312Name_Not_Found:2014/04/01(火) 14:24:45.39 ID:???
ファイル構成を設定する
→分割ファイルを更新する
→自動的にファイルの変更を検知し結合ファイルも更新される
こういうことがやりたいのです
313Name_Not_Found:2014/04/01(火) 15:25:00.81 ID:???
ビルドについてオライリーのメンテナブルJavaScriptに書いていました
jqueryとかのパッケージを解凍するとbuildとかsrcとかのディレクトリに分かれてますが
あれですね
コツをつかむのに少し時間かかりそうですが
ありがとうございました
314Name_Not_Found:2014/04/01(火) 16:58:19.48 ID:???
>>300
むかーし名前なんて識別できればいいとか言って
TsunDeleGateって関数作ったの思い出したあああああ死にたいいいいいいいい
315Name_Not_Found:2014/04/01(火) 20:15:42.21 ID:???
>>312
ファイルの変更を検知して結合というのはやれなくはないけど結合処理に時間が掛かる。
ファイル量によるし、多分2〜3秒程度だろうけど、この数秒のせいで
ファイルを修正してすぐにF5を押した時、結合前のファイルが読み込まれるってことがある。

それもあるし、結合されているとデバッグしにくい。
sourcemapを使うという手もあるけれど。

これらの理由で、分割した状態でも、結合した状態でも
どちらでも動くようにしている。requirejsを使えばそれが可能。

ビルドの設定で結合した状態で動かすのも、分割された状態で動かすのも
コマンド一つで切り替えられるようにしている。
デバッグ用ビルドをした場合は、シンボリックリンクを切り替えて
分割したソースファイルをそのまま参照するようになっている。

だから、開発中は適切に分割されたjsファイルを修正するのでメンテナンス性が良い。
それでいながら、実機では結合されたjsファイルを使用するでパフォーマンスはよい。

という仕組みを作っている。
316Name_Not_Found:2014/04/01(火) 20:23:46.70 ID:???
わざわざ面倒にしてるようにしか思えない
317Name_Not_Found:2014/04/01(火) 21:46:16.27 ID:???
ふーん(笑)

じゃあ、お前requirejs使ってるの?
世間一般でよく使われてるよね。

使ってないでしょ?
なんでこんなものがあるのかも
わからないでしょ?
318Name_Not_Found:2014/04/01(火) 21:52:45.95 ID:???
沸点ひくいな
319Name_Not_Found:2014/04/01(火) 21:58:03.53 ID:???
言い返す言葉はそれだけかよw
320Name_Not_Found:2014/04/01(火) 22:11:26.99 ID:???
それ俺じゃないからw
わざわざrequireJSを使う規模でもないくせに、面倒なことしてるな、それって俺かっこいい的なもんだろ?って言ったんだよ
321Name_Not_Found:2014/04/01(火) 22:13:10.72 ID:???
正確に言うと、ここにいる連中はrequireJSを使う規模じゃないってことなんだよ。
ここにいる連中は、プログラマじゃないからな。
ここはWeb制作板。HTML+CSSがメインで
それだけでは出来ないことをクライアントに作れと言われて
ひーこらいいながらjQueryプラグインを探すレベル。
322Name_Not_Found:2014/04/01(火) 22:13:56.62 ID:???
>>320
普通にrequireJSを使う規模ですがなにか?

requireJSを使う規模じゃないのはお前の仕事では?w
323Name_Not_Found:2014/04/01(火) 22:15:15.08 ID:???
プ板へ帰れ
324Name_Not_Found:2014/04/01(火) 22:17:04.89 ID:???
自分はどれだけ凄いところで、どれほど凄いシステム作ってるか、なんて
証明する手段も権限もなかろう?

やめやめ
せめてID出してやれ
325Name_Not_Found:2014/04/01(火) 22:17:59.62 ID:???
>>320
規模ですかwww
326Name_Not_Found:2014/04/01(火) 22:19:12.95 ID:???
証明する必要ないでしょw

だいたいrequireJSがあるのはそれが必要とされるからで、
広く使われているという事実から有用であることに疑いはない。

それを必要としないのは、そいつの問題。
必要ないと思う奴は。規模が小さいんだよ。
それ以外に理由あるか?
327Name_Not_Found:2014/04/01(火) 22:19:17.64 ID:???
普通にrequireJSを使う規模ですがなにか?
普通にrequireJSを使う規模ですがなにか?
普通にrequireJSを使う規模ですがなにか?
普通にrequireJSを使う規模ですがなにか?
普通にrequireJSを使う規模ですがなにか?
普通にrequireJSを使う規模ですがなにか?
普通にrequireJSを使う規模ですがなにか?
普通にrequireJSを使う規模ですがなにか?
意識高いw
328Name_Not_Found:2014/04/01(火) 22:20:19.29 ID:???
jQueryはRequireJS使っているし
RequireJS対応コードも入ってるよ。
もう少し自分が使っているものを勉強しようぜ
そんなんだらWeb制作板(笑)って言われる
329Name_Not_Found:2014/04/01(火) 22:21:06.67 ID:???
ひどいな、RequireJSを知らん奴が
RequireJSをディスってるのか・・・。
330Name_Not_Found:2014/04/01(火) 22:21:28.55 ID:???
>>328
お前らもコードしか興味が無いプログラマ脳って言われてるんだよw
331Name_Not_Found:2014/04/01(火) 22:23:56.19 ID:???
JavaScriptコードが7000行にもなってでかいから
分割したいって話が出た途端これだよ。

自分が知らないものを、認めたくないって感情から
発言するのはやめとけよ。醜い。冷静になれよ。
332Name_Not_Found:2014/04/01(火) 22:24:51.61 ID:???
分割コンパイルってのは、みんなが使ってる
jQueryでも普通に使われてるテクニックなの。
333Name_Not_Found:2014/04/01(火) 22:25:44.52 ID:???
だから知ってるよそんなことw
334Name_Not_Found:2014/04/01(火) 22:27:58.24 ID:???
流れをぶった切って質問です
prototype.constructorが上書きされて
困ったことの実体験がありましたら教えていただきたいです
よろしくお願いします
335Name_Not_Found:2014/04/01(火) 22:28:33.11 ID:???
知ってるけどたかが7000行で分割するとか意味無いでしょ。
336Name_Not_Found:2014/04/01(火) 22:29:36.66 ID:???
requireJS使うぐらいなら自分で分割する。
別に使えないからじゃない。
337Name_Not_Found:2014/04/01(火) 22:31:11.46 ID:???
あ、やっぱり使えないんだ(笑)
338Name_Not_Found:2014/04/01(火) 22:32:40.72 ID:???
まさか、だれでもやっているようなビルドの話をしただけで、
こんなに拒否反応があると思わなかったな。
何か気に触ったのだろうか? 自慢しているように見えたとか?
いや、普通の話、一例の話をしただからね。
339Name_Not_Found:2014/04/01(火) 22:33:30.38 ID:???
たかが7000行でコーディングに支障をきたすほど重くなるって、どんだけ劣悪な環境なんだよとは思った
340Name_Not_Found:2014/04/01(火) 22:34:01.81 ID:???
>>338
これが使うだけの人(Web制作の住民)と、作る人(プログラマ)の差ですよ。(笑)
341Name_Not_Found:2014/04/01(火) 22:35:16.77 ID:???
>>338
案の定、コミュ障みたいだから分から無いかもしれないけど、
requireJSに拒否反応があるんじゃなく、お前の糞なパーソナリティに拒否反応を示しているんだと思うよ
342Name_Not_Found:2014/04/01(火) 22:36:38.38 ID:???
ちょっと煽られただけで火病っちゃうところが問題なんだね
343Name_Not_Found:2014/04/01(火) 22:37:11.13 ID:???
プログラマにありがちすぎるwww
344Name_Not_Found:2014/04/01(火) 22:41:19.57 ID:???
>>340
ののののの

作らされる人(プログラマ)

ですよ
自虐的な意味で
345Name_Not_Found:2014/04/01(火) 22:43:09.77 ID:???
うむ、がんばりたまえ
346Name_Not_Found:2014/04/01(火) 22:56:47.91 ID:???
Web制作(笑)必死だなw
347Name_Not_Found:2014/04/01(火) 23:17:12.11 ID:???
>>344
ワロタ
いくらコードを書けてもそれを金に換えられるようになるまでは
しがない雇われプログラマだよなー

あと、タコを大事に出来ない奴はダメだなって思った
348Name_Not_Found:2014/04/01(火) 23:21:37.65 ID:???
いったい今度はどこから、金の話が出てきたんだろう?

書いてないけど、金に換えられてないんだ!
そうに違いない!って話?

なんか思い込み激しすぎる。
349Name_Not_Found:2014/04/01(火) 23:33:35.13 ID:???
あはは
自分のことだよう
自虐って書いてあったから笑っちゃった

必死すぎだって
落ち着けよ
350Name_Not_Found:2014/04/01(火) 23:35:10.97 ID:???
自分? 自虐? 自己レスでもしてるのか?
351Name_Not_Found:2014/04/01(火) 23:42:48.70 ID:???
>>350
ごめんごめん
プログラマは作らされる人ですよってのが面白かったってだけだよ
誰かをdisってるわけじゃないよ。他意なし
352Name_Not_Found:2014/04/02(水) 04:16:34.95 ID:???
>>315
そういうものがあるのですか
調べてみます
ありがとうございました
353Name_Not_Found:2014/04/02(水) 04:22:51.73 ID:???
>>339
corei7でメモリも余ってますが
サブライムテキスト2で、補完機能が重くなってきました
それとともに親指シフトソフトが誤動作するのか時々意図しないところに
平仮名が入力されてしまうのが困るところです
あるいはプラグインを見直せばまた軽く出来るのかもしれません
ありがとうございました
354Name_Not_Found:2014/04/02(水) 12:17:32.34 ID:???
じゃばスクリプト難しい
355Name_Not_Found:2014/04/02(水) 13:50:59.35 ID:???
JavaScriptが簡単な言語というのはよく広まっている誤解
決して簡単な言語ではない
356Name_Not_Found:2014/04/02(水) 14:02:54.79 ID:???
他の言語に比べたら簡単だろw
357Name_Not_Found:2014/04/02(水) 14:13:22.00 ID:???
何を持って簡単とするかじゃね?

個人的な経験からすると
簡単だろwって言ってる人に任せると、わちゃわちゃする事が多い印象
358Name_Not_Found:2014/04/02(水) 14:20:16.56 ID:???
他の言語って何?全然変わらないだろ
ブラウザで動くという身近さから簡単と思われてるだけ
359Name_Not_Found:2014/04/02(水) 14:35:28.33 ID:???
>>353
この件ですが、別プロジェクトの短いソースを編集している時にも同様の現象が出来ました
最近出始めたのでソースが長くなったせいと思い込んでいましたが
関係なかったようです
原因はまだ分かりませんが、ありがとうございました
360Name_Not_Found:2014/04/02(水) 14:59:32.66 ID:???
新しくsublime text2をダウンロードして該当ソースを開けたところ、見違えるようにビュンビュン動きました
何らかのプラグインが原因のようです
361Name_Not_Found:2014/04/02(水) 19:13:10.17 ID:???
divのcontenteditable=trueにした時とそうでない時では
メモリ使用量や体感など変わりますか?
362Name_Not_Found:2014/04/02(水) 21:57:28.38 ID:???
1万個くらい複製して試してみれば?
報告よろしく
363Name_Not_Found:2014/04/02(水) 22:02:48.24 ID:???
本質的にはCSSの話なんですが
こっちの人のほうが詳しそうなんで質問させてください

PCの各種ブラウザにおいて、setIntervalで作っていたアニメーションを
CSSのtransitionに置き換えているのですが、FPSが安定しません

ケースバイケースなので厄介なんですが
例えば、flagsまで同じ設定のChromeでも、2台の違うPCで古くてポンコツな方がFPSが安定したりします

GPUの違いかな?とも考えたのですが
同じPCでもChromeでガタつくのがIE11やFirefoxでスムーズになったりします

いろいろ試行錯誤しているところなので、何かを解決していただきたいわけじゃないんですが
PCのブラウザでの、CSSのtransitionの扱い経験が豊富な方がいらっしゃいましたら
何か参考になるポインタだけでもいただけたらと思います

よろしくお願いします
364Name_Not_Found:2014/04/03(木) 12:11:59.19 ID:???
>>340
>>344
のののののの

質問するひと(web制作)、調べてくれる人(プログラマ)
質問者は手間も時間もかけずに答えがわかって嬉しいし
回答者も答えることで徳を積んでいるわけだ
WIN WINの関係だね
365Name_Not_Found:2014/04/03(木) 12:15:24.63 ID:???
Web制作=質問する人

なのか・・・。
366Name_Not_Found:2014/04/03(木) 13:54:20.17 ID:???
IE9でaudio要素のcanPlayTypeメソッドでmp3の'audio/mpeg; codecs="mp3"'はprobablyを返すのに
ローカルやおそらくブラウザキャッシュ?から読み込むとerror.codeに4が返り再生できないのは仕様ですか?

var audio = new Audio('test.mp3');
audio.addEventListener('canplaythrough', function(){
audio.play(); //ブラウザキャッシュ消去後初回は再生できる
}, false);
audio.addEventListener('error', function(){
console.log(audio.error.code); //ローカルテスト時および2度目以降の読み込みからエラー4
}, false);
367Name_Not_Found:2014/04/03(木) 20:12:19.85 ID:???
俺もtransitionでしようとしたけど何か思ったよりキレイにならなくてsetIntervalに戻したことがあったな
368Name_Not_Found:2014/04/03(木) 20:31:12.86 ID:???
上手くやればかなり滑らかなアニメーションにはなるけどね
現状は使い分けないと色々なブラウザで対応が難しいかも
369Name_Not_Found:2014/04/03(木) 23:35:25.07 ID:???
>>367
ご意見あざす

>>368
単品だとほとんどのブラウザで問題なく動くんですよね

複数の要素で同時に動かすと、特にopacityを動かすと、とたんに重くなる場合がある
せめてこの場合を見極めて振り分けでも出来ればいいんだけど
と、いろんなPCズラズラ並べて検討しております…
370Name_Not_Found:2014/04/04(金) 06:24:49.57 ID:???
ドラッグも出来るテキストエリアの領域があります
テキストエリアはmousedownでフォーカスされます
ドラッグはmousedownで開始されmouseupで終了されます
つまりmousedownの段階では、フォーカスなのか、ドラッグなのか分かりません
そこでmousedownをとりあえずpreventDefaultして、
クリックの段階でフォーカスさせたいと思うのですが、
クリックされた場所にキャレットを出現させることが難しいです。
キャレットのポイントはmousedownでしか出来ないのです。
この二律背反をどう解決したらいいのでしょうか?
371Name_Not_Found:2014/04/04(金) 06:29:37.24 ID:???
まとめると
mousedownをpreventDefaultしながら
mousedownが通った時にキャレットがポイントされる位置を知りたい
ということです
これは難しい問題だと思います
372Name_Not_Found:2014/04/04(金) 06:45:28.61 ID:???
preventDefaultする前にごにょごにょするのは出来んの?
373Name_Not_Found:2014/04/04(金) 18:07:03.13 ID:???
>>169のコ−ドって、ラジオボタンが横一列に3つ表示されて
左をクリックすれば1、真ん中が2、右をクリックで3が表示されるけど
これどうやって関連づけしてるの?
ラジオボタンにIDを付与してるわけじゃなし、コ−ドからはよくわかんない
374Name_Not_Found:2014/04/04(金) 18:27:49.58 ID:???
これ分からないって厳しいねwてか、なんでぐぐらないんだろう
index()とかeqとか調べればすぐ分かるだろうに
375373:2014/04/04(金) 18:58:09.60 ID:???
>>374
おおっ
もちょっと詳しく
376Name_Not_Found:2014/04/04(金) 19:00:16.53 ID:???
>>373
並び順依存だな
タブはJS切れた時のことを考えると

<a href="#tab1">タブ1</a>
<a href="#tab2">タブ2</a>
<a href="#tab3">タブ3</a>

<div id="tab1">ほげほげ</div>
<div id="tab2">ふがふが</div>
<div id="tab3">はげはげ</div>

ってしたほうがいいわな
377Name_Not_Found:2014/04/04(金) 19:33:09.55 ID:???
>>370
そのような操作の仕組みにするとテキスト選択操作が面倒になって
却って使い難い UI にならないか?

選択操作は滅多に行われないなどの特別な理由があるなら別だが
一般論としてはデフォルトの挙動を変えるのは利用者を戸惑わせるので
なるべく避けたい所
(ゆえにブラウザの作りも基本的なふるまいは変え難いようにできている)

alt + click ならドラッグ開始(または逆に選択開始)のような方法もある
378Name_Not_Found:2014/04/04(金) 20:49:22.79 ID:???
んん?
つまりindex()とかeqを使わずに>>169のコ−ドを書くと
どんな感じになるんだってばよ?
379Name_Not_Found:2014/04/04(金) 21:27:34.08 ID:???
>>378
多少周りくどいけど>>166がわかりやすいんじゃないか?
HTMLは>>376ので
380Name_Not_Found:2014/04/04(金) 21:56:58.19 ID:???
jqueryで.width()とかでstyle設定した時、生成されるhtmlが"height: 100px;"などですが
:の後の空白はいらないのでは?メモリの無駄遣いでよくないと思います
381373:2014/04/04(金) 22:28:14.45 ID:???
>>377
ありがと
通りすがりだったんだけど、index(this)とeq()の知識に特に乏しかったから
>>169のコ−ドにindex(this)とeq()抜きで書くとどういった表現になるのか
良い機会だと思って質問させていただいたの
382Name_Not_Found:2014/04/04(金) 22:31:13.01 ID:???
>>380
よし
じゃあ今から修正コード書いて送るんだ!

冗談はさて置き、意外にちゃんとレスポンスしてくれるよ
1.8か1.9が出てすぐ、たまたまチェックボックスのtriggerがおかしかったのを見つけられて
投稿したら、わかってるよ!おまえで4人目だよ!ってすぐ返事きた

こっちが夜中だったからかも知れないけど
383Name_Not_Found:2014/04/04(金) 22:35:12.48 ID:???
>>381
結局「何かをクリックすると何かが動く」わけだから
その二つの何かを結びつける何か、も必要なんだよ

>>169のはHTMLの並び順を、結びつける何かにしている
$で返ってくるjQオブジェクトってコレクションみたいなもんだから
そこからn番目を取り出すのがeq(n)
384373:2014/04/05(土) 02:44:52.39 ID:???
>>383
むぅ・・
たぶん、その一段階前がわかってない俺
385Name_Not_Found:2014/04/05(土) 03:52:11.93 ID:???
むしろ>>373>>169のどこが分からないのかが気になる
386373:2014/04/05(土) 04:09:47.10 ID:???
>>385
なにかでかい勘違いをしている悪寒・・
どなたか大変申し訳ないけれど、>>169のコ−ドに
index(this)とeq()抜きで意味が通るように書いてみてくださらんですか
ドマヌケな勘違いがある模様・・
387Name_Not_Found:2014/04/05(土) 09:51:20.07 ID:???
https://developer.mozilla.org/en-US/docs/Web/API/Node.setUserData

node.setUserDataはサポートされているブラウザが少ないですが
勝手にnode.dataなどのプロパティにユーザデータを保存してもいいということでしょうか?
388Name_Not_Found:2014/04/05(土) 09:52:44.53 ID:???
dataプロパティはテキストノードで使うから駄目ですね
389Name_Not_Found:2014/04/05(土) 11:21:02.34 ID:???
var ary = [
[2, "c"],
[3, "a"],
[1, "b"]
];

こういう二次元配列で
数字を基準にソートして
[
[1, "b"]
[2, "c"],
[3, "a"],
]
と文字を基準にして
[
[3, "a"],
[1, "b"]
[2, "c"],
]
ってソートするベストな方法を教えてください
390Name_Not_Found:2014/04/05(土) 11:24:55.75 ID:???
>>387
String型でよければdataset
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset
String型以外を格納したいならクロージャに閉じ込める
391Name_Not_Found:2014/04/05(土) 11:29:53.10 ID:???
>>389
Array.prototype.sort
392Name_Not_Found:2014/04/05(土) 11:42:43.80 ID:???
>>390
それ用のプロパティがあったのですね
ありがとうございました
393169:2014/04/05(土) 12:03:38.41 ID:???
なんか今更俺が書いたコードにレスがあるから
斜め上の話をするわw

>>383
> その二つの何かを結びつける何か、も必要なんだよ
こういう風にして結びつける方法もあるよね。

<ul>
 <li><a href="#tab1"></li>
 <li><a href="#tab2"></li>
 <li><a href="#tab3"></li>
</fieldset>
<div id="pages">
 <div id="tab1">1</div>
 <div id="tab2">2</div>
 <div id="tab3">3</div>
</div>

これのメリットはCSSとJavaScriptの両方が無効でも動作するという点。
>>166みたいに、JavaScriptべったりな仕様は俺は嫌いだな。
1. HTMLだけで表現する
2. CSSで装飾する
3. 最後にJavaScriptで動きを加える。
理想はこの順番。
394Name_Not_Found:2014/04/05(土) 12:11:34.66 ID:???
おれのかんがえるさいきょうのじゃばすくりぷと
395Name_Not_Found:2014/04/05(土) 18:22:58.97 ID:???
ここで答えると転載禁止なので訴えられるって本当ですか?
396Name_Not_Found:2014/04/05(土) 19:13:10.34 ID:???
うん
397Name_Not_Found:2014/04/05(土) 20:17:28.38 ID:???
ゴーストライターを使ってるってマスコミにつるし上げに合うぞ。
サングラス取って短髪にしないと!
398Name_Not_Found:2014/04/06(日) 07:22:38.57 ID:???
転載禁止なので訴えられるがどういう意味なのか分からん
聞いて教えてもらったコードをそのまま使っていたらアウトってこと?
そんなやつおらんやろ
399Name_Not_Found:2014/04/06(日) 10:05:32.17 ID:???
jqueryオブジェクトを見るとoffsetLeftなどのプロパティがありますが
これは直接読んだら駄目なんでしょうか?
いちいちoffset()メソッドで読むと関数呼び出し分遅くなりますよね?
400Name_Not_Found:2014/04/06(日) 12:37:33.63 ID:???
>>399
そもそもそれは、javascriptのプロパティだから、直読みすること自体は
問題無いと思われ。
https://developer.mozilla.org/ja/docs/DOM/Element.offsetLeft
401Name_Not_Found:2014/04/06(日) 13:49:31.49 ID:???
あるブログのコードを引用してここで質問したら
そのブログは転載とみなされて訴えられちゃうケース
402Name_Not_Found:2014/04/06(日) 17:14:38.21 ID:???
そんなケースあってたまるか
403Name_Not_Found:2014/04/06(日) 17:25:44.47 ID:???
>>395
誰がどういう理由で訴えるのかを書かないのはなぜですか?
404Name_Not_Found:2014/04/06(日) 17:31:08.89 ID:???
405Name_Not_Found:2014/04/06(日) 17:34:31.56 ID:???
>>404
意味がわかりませんね
2chに書き込むことがボランティアと認められて西村博之から訴えられるといいたいのですか?
自分の言葉で主張してください
406Name_Not_Found:2014/04/06(日) 17:49:53.46 ID:???
これ以上主張することってあるんですか
407Name_Not_Found:2014/04/06(日) 17:52:00.13 ID:???
>>404はRaceqeen incが西村博之を訴えるという話でしょ
利用者に同影響するというのか?
408Name_Not_Found:2014/04/06(日) 17:56:47.01 ID:???
>>406
誰がどういう理由で訴えるのかを書かないのはなぜですか?
409Name_Not_Found:2014/04/06(日) 20:29:14.05 ID:???
文字列が書かれたdivがあり、そのdivの中のどこかがクリックされた時
何列目の何行目をクリックされたか知るには
どうすればいいと思いますか?
410Name_Not_Found:2014/04/06(日) 20:49:41.58 ID:???
>>409
等幅フォントを指定し、マウス座標から該当文字位置を算出する
411Name_Not_Found:2014/04/06(日) 21:10:24.53 ID:???
div内の文字列の1文字づつをspanで囲む
412Name_Not_Found:2014/04/06(日) 21:39:52.69 ID:???
>>411
それだけだと行数を計測できないのでは?
413Name_Not_Found:2014/04/06(日) 21:48:56.99 ID:???
>>411ではないが、div要素内の先頭文字から座標を取得して行き、y座標から何行目かを計測、何文字目かは行数が変わった時からカウント
毎回、計算させるのは無駄だから始めの描画が終ったときに計算しておいてspan要素でマークアップしておく、というところだろうが、描画後にウインドウの大きさを変える事も踏まえるとonresizeも監視する必要がある
座標で計算する部分は>>410と同じだな
414Name_Not_Found:2014/04/06(日) 22:31:47.41 ID:???
「先頭文字から座標を取得して行き」というけど
spanで区切らないと一列目以降の座標は取得できないのでは?
415413:2014/04/07(月) 00:05:58.33 ID:???
>>414
確かに…
spanで括らないなら等幅フォントを使うしかないな
416Name_Not_Found:2014/04/07(月) 00:11:40.73 ID:???
3行以内の質問は回答があっても大抵無反応だな
熱意ある回答者がいなくなるのもわかる気がする
417Name_Not_Found:2014/04/07(月) 02:01:05.33 ID:???
>>409
CaretPosition インタフェース(CSSOM)を使うか
上手くいくかどうか判らんし CaretPosition が未サポートかもしれないが

mousedown イベントの時点で contentEditable にしてから
click の時点で caret 位置を取得してごにょごにょ
418Name_Not_Found:2014/04/07(月) 02:04:48.70 ID:???
間違えた
CSSOM → CSSOM View
419Name_Not_Found:2014/04/07(月) 08:02:56.63 ID:???
>>416
全然減ってないが?
むしろ変な回答してそれを指摘すると発狂する馬鹿回答者がいなくなったと思う
熱意ある回答者ってそういうやつのことか?
420Name_Not_Found:2014/04/07(月) 14:12:20.30 ID:???
「今押されたキーのキーコード」 ではなく
「すでに押されてるキーのキーコード」 を
知る方法を知りたい。
421Name_Not_Found:2014/04/07(月) 14:34:08.25 ID:???
「すでに押されてる」って?
今押されたのを覚えとけばイイとかって話じゃなく?
422Name_Not_Found:2014/04/07(月) 14:38:16.05 ID:???
getModifierState
キーコードを知る方法じゃないけど
423Name_Not_Found:2014/04/07(月) 17:07:29.00 ID:???
keydownとkeyupを管理して
現在押されているキーコードの一覧が分かるようにしたらいいのでは
424409:2014/04/07(月) 17:10:36.78 ID:???
回答ありがとうございます
CaretPositionインタフェイスっていうのあるのですね
たしかにこのあたりの操作のしにくさは異常だと思っていました
ただまだ普及していないようなので
span区切りで座標データ化してポジショニングしようと思います
ありがとうございました
425Name_Not_Found:2014/04/07(月) 19:04:42.00 ID:???
>>409 自分が過去にやった方法だと

まずdivを複製する、そのときにそのdivに間接的にかかってるスタイルを属性で直接指定する
次にouterHTMLをforeignObjectでくるんだSVGを作る
この時に最終文字の次スペースにマーカーに当たる要素置いて相対位置("左下")を取得しておく
そしてDataURLなんかでCanvasに貼り付ける
ここまでが基本の1操作

この基本の1操作を、div内の文字数を0からlengthまで変えながら試す↓
クリックされた相対位置がマーカー位置より前("左下"より左上)に初めてなった時の文字列の最終文字がクリックされた文字
もしくは極稀に起こるマーカーのみの改行に対処したり、0→lengthでないアルゴリズムにしたいときは、
クリックされた相対位置がマーカー位置より前("左下"より左上、または"左上"より上)になる最短の文字列の最終文字がクリックされた文字

画像が入ってたりするときは、ちょっとややこしい
一応SVGの画像もオリジンが継承されるようになってきたけど、
ブラウザやバージョンによってはオリジンエラーになることがある
そういう場合は画像をrectでもなんでもいいけど置き換える

いっそChromeが対応してるRTCでのスクリーンキャプチャで画像解析してもいいかもしれない
特色のマーカーを配置しておけばImageDataの解析は難しくないはず
426Name_Not_Found:2014/04/07(月) 20:05:41.07 ID:???
なんか犯罪のにおいを感じるのは俺だけ?
427Name_Not_Found:2014/04/07(月) 20:23:02.59 ID:???
お前だけ
428Name_Not_Found:2014/04/07(月) 20:42:21.28 ID:???
SVGもキャンバスも使ったことないのでちょっと分からないですが
色んなやり方があるんですね
いつか使ってみたいと思います
ありがとうございました
429Name_Not_Found:2014/04/08(火) 02:24:55.07 ID:???
try/catchについて質問です

これまでは聞き齧った知識で漠然と
 「tryブロック内の処理は遅くなる」
と思っていたのですが、実際は
 「条件分岐として使うにはエラーキャッチ時の速度に難がある」
程度だという認識で正しいのでしょうか
430Name_Not_Found:2014/04/08(火) 03:16:43.51 ID:???
計測もしないで、速度を気にするやつは馬鹿である。
0.001秒のために、何時間も頑張る奴は仕事の優先順位がつけられない。
という認識でいいよw
431Name_Not_Found:2014/04/08(火) 04:11:04.28 ID:???
>>429
速度とかごちゃごちゃいってないで、
勉強しろ。
432Name_Not_Found:2014/04/08(火) 08:53:42.36 ID:???
他のやり方では出来ない時にしか使わなければ問題ないんじゃないの
433Name_Not_Found:2014/04/08(火) 08:57:16.92 ID:???
速度に難があると言ってる時点でなぁー

技術ってのは適切な場所に使うもので
速度のこと何って考えるのは最後の最後。

try/catchはtry/catchを使うべき所に使うもの。
速度に難とかを考える事自体が間違っている。

まあ多分、どういう所に使うかが
わかってないんだろうねー。勉強しろ。
434Name_Not_Found:2014/04/08(火) 09:00:20.37 ID:???
A級以上のプログラマは速度のことも常に気にしているもの
速度を気にするなとかいうのはB級のたわごと
435Name_Not_Found:2014/04/08(火) 09:23:28.58 ID:???
だから、速度のことを気にするのは、最後って言ってるだろ
頭悪いのか? 目が悪いのか? 顔が悪いのか? 全部か。
436Name_Not_Found:2014/04/08(火) 10:15:01.52 ID:???
処理ごとのコストは知らないより知っていた方がいいに決まってるのに
速度否定厨は知ること自体を否定するからな。
「些細なチューンのために何時間もかけるのは愚か」などと
勝手に前提を付け加えてそれを否定するのは馬鹿に共通する特徴。
自分で作った藁人形を突き刺してるにすぎないのだ。
437Name_Not_Found:2014/04/08(火) 10:21:31.12 ID:???
>>436
計測しましたか?

普段数回しか実行しないのに、何万回、何十万回やって
やっと違いが分かる程度じゃ意味無いですよ。

ちゃんと計測してからいいましょうね。
438Name_Not_Found:2014/04/08(火) 10:33:11.23 ID:???
俺は質問者じゃねーから。
それに質問に計測は必須ではない。
答えたくなければスルーすればいい。
書かれてもいない条件を勝手に付加して否定するお前が馬鹿ということだけが真。
439Name_Not_Found:2014/04/08(火) 10:34:57.20 ID:???
>>438
質問者じゃないのになんでレスしたんですか?

私は、レスした人(つまりあなた)に、レスしただけで
別に質問者にレスしたんじゃありませんよ

計測しないで速度云々言い出す奴は初心者。
そのことに何も違いはありませんが。
440Name_Not_Found:2014/04/08(火) 10:53:05.19 ID:???
まーた「質問者じゃないとレスしてはいけない」
という謎の前提を付け加えて否定してる
質問には実行される頻度などについての条件は何も書かれていないのに
「数回しか実行しない」などという前提を付け加えるのと同様の愚を犯している。
問題の切り分け能力が低いんだよ
言葉の使い方だけで技術者としてのレベルの低さが分かる
441Name_Not_Found:2014/04/08(火) 11:00:39.77 ID:???
>>440
へ? だから俺もお前にレスしてるんだけど?
誰にレスしようが自由だろ。

try-catchは例外なんだから
実行される回数は少ないに決まってるだろ

それともお前が「多いって決めつける」のか?

お前実践経験ないんじゃね?

答えられる奴が実行回数答えろよ。
答えない限り、少ないという一般的な前提を当てはめるだけのこと。

あと、これは質問者にレスしてるんで、
お前はレスしなくていいよw
442Name_Not_Found:2014/04/08(火) 12:41:26.70 ID:???
速度についてはアルゴリズムがO(n^2)になってないかを気にしていればいい
例えば、n個入力がある時に1個追加する度に全データを線形にサーチしちゃったり
しないように気を付ける
それがA級プログラマ

それ以外のどうでもいい高速化は考えるだけ無駄
直感的に分かりやすいように書けばいい
そんで最後にプロファイラで計測して遅くなってるところだけ直す
443Name_Not_Found:2014/04/08(火) 14:20:33.63 ID:???
>>432-433に同意。
try-catchは使わなければ対応出来ない状況で使うべきで速度を考えるのはtry-catchを使わなければならないにも関わらず、十分なパフォーマンスを得られない場合。
実際、try-catchを使わなければならない状況はそれ程多くないはず。
それでも重くなるなら結果をキャッシュしておくとか、アルゴリズムを見直した方がいい。
444Name_Not_Found:2014/04/08(火) 17:24:34.28 ID:???
聞かれた質問に対してのみ答えればよろしい
その他のチューン云々の分かりきったグダ話はいらない
質問者の立場の時、この種のわかりきった説教ほどウザいものはない
そんなこと聞いてねえっつーの
445Name_Not_Found:2014/04/08(火) 17:27:38.61 ID:???
あまりにも理解が表層的だからつっこまれてるの分からないの?
だからバカだのチョンだの言われるんだよw
446Name_Not_Found:2014/04/08(火) 17:32:03.35 ID:???
やっぱりネトウヨかw
相手の言葉に勝手に条件を付加して
自分の作りあげた藁人形を攻撃する論法がネトウヨくせーと思ってたわ
447Name_Not_Found:2014/04/08(火) 17:41:30.40 ID:???
バカは思考回路がショートしてるから人にレッテル貼って安心するんだよね
便利な言葉だよねネトウヨってwww
448Name_Not_Found:2014/04/08(火) 17:45:35.11 ID:???
技術者に問われるのはいかに現実と向き合うかなので
現実逃避に酔いしれるネトウヨは致命的。
ネトウヨ的思考習慣は技術者としての精度を著しく下げてしまう
A級以上になりたければネトウヨを卒業することだな
449Name_Not_Found:2014/04/08(火) 17:51:02.28 ID:???
思考が停止した奴に限って速度速度言うんだよ、計測しやすいからね
本来速度を改善することで得られるものは何なのかを明確にしなければただのオナニーなのに
だから技術者に求められるのは現実と向き合うなんて頭の悪いことを堂々と言えちゃうんだよね
450Name_Not_Found:2014/04/08(火) 17:51:59.62 ID:???
バカは自分がバカであることを自覚できないからバカなんだよね
451Name_Not_Found:2014/04/08(火) 18:13:14.50 ID:???
子要素を全て削除する処理ってどう書くべきでしょうか
やはりループでchidlNodes.lengthが0になるまで繰り返しますか?
そうするとinnerHTMLで上書きしたほうが速度的に有利になることが多いのですが、もっと良い方法が別はないのでしょうか
452Name_Not_Found:2014/04/08(火) 18:30:39.92 ID:???
>>451
子を含まない親のコピーを作って、旧親を消して、新親に置き換える。
…とか?
453Name_Not_Found:2014/04/08(火) 18:37:10.97 ID:???
>>452
早速試してみたらinnerHTMLと同等の早さになりました
なるほど、速度を気にするなら雛形を作ってcloneNodeする方が一つ一つsetAttrobute/style.setPropertyするより早いんですね
454Name_Not_Found:2014/04/08(火) 19:29:07.00 ID:???
>>449
まーた前提条件捏造法か
詭弁が骨身に沁み込んだこの種のカスとの議論は本当に得るものがない
455Name_Not_Found:2014/04/08(火) 19:33:38.82 ID:???
>>454
ちなみに骨身に沁み込むなんて日本語無いですよ
456Name_Not_Found:2014/04/08(火) 19:36:40.35 ID:???
捏造の意味も分かってないんだろうなw
母国語さえまともに使えない奴にプログラムなんて無理だな
457Name_Not_Found:2014/04/08(火) 19:37:55.22 ID:???
即時関数の中で、その空間においてのみグローバルな変数を作るには
varで宣言するしかないのでしょうか?
windowオブジェクトのメンバにすることでグローバル変数を作ることができるように、
何らかのオブジェクトのメンバを作成することでも上記のものが作れないものかと思うのですが
458Name_Not_Found:2014/04/08(火) 19:46:25.94 ID:???
>>455
まーたネトウヨお得意の「定義」かw
骨身という名詞に沁み込むという動詞を組み合わせた比喩的表現で何もおかしくねーわ
ネトウヨってこの種の低レベルな詭弁大好きだよな
馬鹿でも簡単に出来るだからだろうが、
そんなものには意味がないんだよ
議論というものは両者が何かをそこから得ることのできる創造的な営為だが、
詭弁の生産性はゼロ。
誰一人として得しないのが詭弁。
むろんお前自身もな。
459Name_Not_Found:2014/04/08(火) 19:50:35.75 ID:???
>>458
慣用表現というのは広く人口に膾炙そて初めて成立するものなんだよ
こっちは別に議論をしているつもりなんてなくて、ただ間違った言葉使いを指摘してあげただけ
せっかく勉強になっただろうに、なんでそんなにムキになっちゃうのかな
460Name_Not_Found:2014/04/08(火) 19:55:37.24 ID:???
>>459
膾炙そてww
言葉というものは拡張可能なんだよ
「沁みる」より「沁み込む」の方が一層深く浸透している感じがするだろ?
それがレトリックだ
おのれの愚かさを棚に上げるな
461Name_Not_Found:2014/04/08(火) 19:57:02.02 ID:???
タイポしちゃった
骨身に沁みるじゃ、意味が違うよね?
辞書調べてみなw
462Name_Not_Found:2014/04/08(火) 19:58:33.22 ID:???
レトリックに頓珍漢なツッコミしてくる奴たまにいるけどアスペルガーなのかな
辞書が先にあるのではなく言葉が先にあるのに逆だと思ってるんだよな
463Name_Not_Found:2014/04/08(火) 20:00:03.72 ID:???
言葉の誤用はレトリックとは言いません
464Name_Not_Found:2014/04/08(火) 20:01:33.14 ID:???
>>461
だから骨身に沁みるって書いてねーだろ
レトリックを勉強しろ
465Name_Not_Found:2014/04/08(火) 20:04:01.05 ID:???
>>464
>>460
ちょーアスペwww
こわい
466Name_Not_Found:2014/04/08(火) 20:06:35.51 ID:???
無知であることは恥ずかしいことじゃない
無知を認められないことこそ恥ずべきことなんだよ
467Name_Not_Found:2014/04/08(火) 20:07:45.86 ID:???
アスペはお前だよ
「骨身に沁みる」という慣用表現を「沁み込む」に書き換えることで新しい言葉に拡張する
高度に文学的なレトリックだ
俺にしてみればこの程度の知的遊戯は日常だが読み手の知性を高く見積もりすぎたらしい
その点は俺のミスだったな
468Name_Not_Found:2014/04/08(火) 20:12:08.64 ID:???
まぁプログラマーに文学的リテラシーは必須ではないし
適当ではなかったことは認めよう
もっと無機質な言葉を心がけるよ
469Name_Not_Found:2014/04/08(火) 20:14:48.70 ID:???
言葉の誤用を指摘しているだけなのにな
なぜ間違いを認められないんだろう
470Name_Not_Found:2014/04/08(火) 20:32:08.82 ID:???
間違いを認められない奴はプログラミングに向いてない。
471Name_Not_Found:2014/04/08(火) 20:40:22.14 ID:???
web制作版をみていて思うのは「俺は質問者じゃないけど」みたいな雰囲気で
回答者にかみつくひとが多くてほんと萎える
有意義なことを言っているのならその発言は歓迎されるべきだけど
大したこと言ってないしな
472Name_Not_Found:2014/04/08(火) 20:44:05.76 ID:???
>>471
おれはお前みたいな表向きは控えめな自己主張をする奴が一番ウザいと思う
473Name_Not_Found:2014/04/08(火) 20:56:20.83 ID:???
>>472
俺のことが嫌いなのは理解できたが
表向きは控えめな自己主張とやらは理解できなかったわ
もっと分かりやすく説明してくれ
474Name_Not_Found:2014/04/08(火) 21:21:24.24 ID:???
>>453
該当親要素にイベント定義されているとcloneNodeした時点でイベントがなくなるので注意(わかってるとは思うけど、念の為)
475Name_Not_Found:2014/04/08(火) 21:27:27.56 ID:???
また delegate の話振るのかよw
476Name_Not_Found:2014/04/08(火) 21:29:00.10 ID:???
>>457
その何らかのオブジェクトを
その空間においてのみグローバルな変数にする
ために var で宣言することになる
477Name_Not_Found:2014/04/08(火) 21:29:27.68 ID:???
どうも回答にいちいち噛みつかないと落ち着かない人が常駐しているみたいね
478Name_Not_Found:2014/04/08(火) 21:39:11.69 ID:???
質問者が噛みつくならわかるけど、質問者のことをわかったつもりで赤の他人が噛みつくのは…質問者の意図とかけ離れていたらどうするんだろうね
質問者も出てきづらくなるだろうしね
479429:2014/04/09(水) 00:20:54.58 ID:???
どうも出て来辛くなった質問者こと>>429です

そもそもの発端はどこかで聞いた「try/catchは遅い」というのを
ちょうど話題になっているcloneNode()を使った重めの処理を回している時に
ふと思い出し、それをtryブロックで囲ってみたら速度低下が見られなかったので
じゃあこれまでの認識が間違ってたのかな…と疑問に感じたことでした
軽い気持ちで質問してしまったのでなんだか申し訳ない次第です

速度に関してのレスはまだ理解できないことが多いので
少しずつ調べながら自分の知識にしていきたいと思います
たくさんのレスありがとうございました
480Name_Not_Found:2014/04/09(水) 03:20:59.14 ID:???
イライラ解消、ストレス発散の場所としてここが重要な人はいるからな
気にするな
481Name_Not_Found:2014/04/09(水) 04:16:06.15 ID:???
>>479
最初から答えは出てるんだよ。
速度に関しては、計測が全てって。

try-catchに関しては、どういう時に使うかを考えれば、
何度も実行されるものではないので、上級者はたとえ重かったとしても
使うべき所に使うものという印象でしかない。

try-catchに速度の観点で考えるべきことは殆ど無いんだよ。
実際に計測して遅くもなってないだろう?
ここまで上級者はわかっていた話。

荒れたのは、速度第一みたいなアホが現れたから。
482Name_Not_Found:2014/04/09(水) 08:42:16.41 ID:???
>>479
回答者の教育が至らず、誠に申し訳ございません
舐めたことをぬかす回答者を今後もビシバシ鍛え上げていく所存ですので
今後とも何卒よろしくお願いいたします
483Name_Not_Found:2014/04/09(水) 08:44:30.84 ID:???
>>481
>速度第一

そんな奴一人もいねえ
ひっとりもいねえ
いつまで藁人形を槍で突く愚行を続ける気なのか
484Name_Not_Found:2014/04/09(水) 08:52:02.07 ID:???
>>476
やはりそうですか
ありがとうございました
485Name_Not_Found:2014/04/09(水) 16:21:57.38 ID:???
>>482
お前キモいわ
486Name_Not_Found:2014/04/09(水) 17:08:44.13 ID:???
ライブラリが他のライブラリを使っている時、
依存しているライブラリを示すにはどうすればいいですか?
487Name_Not_Found:2014/04/09(水) 20:48:57.30 ID:???
@requires
488Name_Not_Found:2014/04/09(水) 21:00:15.55 ID:???
JSDocっていう書き方をしたらいいんですね
ありがとうございました
489Name_Not_Found:2014/04/09(水) 23:11:12.76 ID:???
document.elementFromPoint
ですが、これは要素が実際に画面に表示されていない時には
取得できないようです。
画面外の要素を、座標で検出するには、
スクリプトで当たり判定するしかないでしょうか?
490Name_Not_Found:2014/04/10(木) 01:47:45.43 ID:???
>>489
「表示されていない」
が、レイアウトの対象でない( display: none など)を意味するならば
レイアウトの対象に置いてやる必要があるだろう
例えば一時的に display: none を解除して visibility :hidden にするなど

「表示されていない」
がスクロールしたなら表示できる状態を意味するのなら取得できる筈
(「画面外」が正確に意味する所は?)
491Name_Not_Found:2014/04/10(木) 01:51:28.50 ID:???
>取得できる筈
間違えた。やっぱ取得できないと思う
492Name_Not_Found:2014/04/10(木) 02:01:33.73 ID:???
>>489
P = 入力座標(画面外)
Q = 適当な画面内の座標
Q-P だけスクロール
document.elementFromPoint(Q)
P-Q だけスクロールして元に戻す

でいけるかな?
493Name_Not_Found:2014/04/10(木) 02:21:50.29 ID:???
     ノヽ
    /ヾツ\
   /  )ノ  \
  /      ヘ
  | _  _ |
  <ヘ ,,,  ,,, />
  Y (●) (●) Y   < よんだ?
  ヽ ⌒)ー(⌒ ノ
   >―――<
  _/     \_
 (ミ /    Y ミ)
   ̄|    | ̄
   (\ ^ /)
   ヽ \_/ /
   ヽ | /
    (mn人nm)
494Name_Not_Found:2014/04/10(木) 07:44:43.86 ID:???
判例に使うのでマイナスの座標でやりたかったのです
たしかに一時的にスクロールすればできそうですね
ありがとうございました
495Name_Not_Found:2014/04/10(木) 08:51:57.49 ID:U50sLnid
ある、会員制掲示板のデータを自動で採取したいです。
で、次の ページを読み込むまでの時間を10秒〜30秒の間でランダムに設定したいのですが、
こういうプログラムは、JavaScript で書けるでしょうか?
496Name_Not_Found:2014/04/10(木) 09:22:59.64 ID:???
>>495
おまえには無理
497Name_Not_Found:2014/04/10(木) 09:46:59.19 ID:???
>>495
JavaScriptで実現可能
498Name_Not_Found:2014/04/10(木) 17:46:48.58 ID:y1hfto8s
>>497
どうもです。
499Name_Not_Found:2014/04/10(木) 19:08:35.12 ID:???
>>498
わかったところで、実際に自分で組めないんで意味が無い
すまぬ
500Name_Not_Found:2014/04/10(木) 19:50:02.13 ID:???
>>499
それはあなた自身の問題では?
私は質問された事に答えるだけです。
501Name_Not_Found:2014/04/10(木) 20:37:38.19 ID:???
http://jsbin.com/vedemiyo/1/edit

スクロールバーを持つ二つのdivがあり、
左の要素には大きめのdiv,
右の要素には長い文字列を入れています。
どちらもクリックすると、eventのoffsetX/Yをコンソール出力します。
スクロールさせてクリックした場合、
左はスクロール値も考慮された、正しいオフセット座標が表示されます。
しかし右は、スクロール値が考慮されていないようです。
何故こうなるのでしょうか?
コンテンツが文字列の場合でも正しいオフセットを得るにはどうしたらいいでしょうか
502Name_Not_Found:2014/04/10(木) 21:22:03.59 ID:???
firefoxでは値すらなかったので調べたところ

https://api.jquery.com/mousemove/

Properties such as .clientX, .offsetX, and .pageX are available,
but support for them differs between browsers.
Fortunately, jQuery normalizes the .pageX and .pageY properties so that
they can be used in all browsers.

とありました
pageX, pageYを使うべきで、他のプロパティは非推奨みたいですね
ありがとうございました
503Name_Not_Found:2014/04/10(木) 23:31:18.04 ID:???
clientX/Yが使えないブラウザなんてありますか?
504Name_Not_Found:2014/04/11(金) 16:33:41.01 ID:???
通常、contenteditableな要素でmousedownをpreventDefaultすると
フォーカスを防ぐことができます
しかしIE7/8では、フォーカスしてしまいます
ためしにclickやkeyupもpreventDefaultしてみましたが、やはりフォーカスしてしまいます
どうすればフォーカスを止めることができるのでしょうか?
505Name_Not_Found:2014/04/11(金) 23:14:59.18 ID:???
>>504
最善の解決策は、IE7,IE8のサポートをやめるか
IE7/8を稼働対象として求めてくるクライアントとの関係を断つことです。
506Name_Not_Found:2014/04/11(金) 23:54:06.42 ID:???
質問は「IE7/8でどうすればフォーカスを止めることができるのでしょうか?」です。
話をちゃんと聞きましょう。
507Name_Not_Found:2014/04/12(土) 00:02:16.61 ID:???
やめたいのはやまやまですがまだシェアがあるので。
evernoteもie7で閲覧できるようですし
508Name_Not_Found:2014/04/12(土) 00:06:08.18 ID:???
うちの仮想環境のXPにはIE8が入ってるので
いまだにIE7って何なの?とは思いますが・・
XP以上ならIE8以上にできるだろが
509Name_Not_Found:2014/04/12(土) 02:23:08.12 ID:???
イベントオブジェクトのcurrentTargetとtargetを混同して
常にtargetを使っていました
これは俺だけでしょうか?
510Name_Not_Found:2014/04/12(土) 09:54:14.52 ID:???
はいそうです。ドキュメント読んでないのが悪いのです。
511Name_Not_Found:2014/04/12(土) 10:22:16.79 ID:???
そうですか・・
ありがとうございました
512Name_Not_Found:2014/04/12(土) 10:49:17.89 ID:???
けっこうな間違いだと思うのに今まで正常に動いていたのが不思議だな
513Name_Not_Found:2014/04/12(土) 13:34:49.14 ID:???
>>504
ここをこうやってこうすれば止めることができる
514Name_Not_Found:2014/04/12(土) 13:35:53.44 ID:???
分からないなら黙ってろよカス
515Name_Not_Found:2014/04/12(土) 14:19:50.37 ID:???
カスっていうやつがカス
516Name_Not_Found:2014/04/12(土) 15:13:26.32 ID:???
>>513
本当ならもっと具体的にお願いします
>>514
汚い言葉はやめましょう
>>515
みんなとなかよくして下さい
517Name_Not_Found:2014/04/13(日) 15:00:51.03 ID:???
ノードがドキュメントルートかを
(node === document.body || node === document.documentElement)
で調べています。
ですが、ドキュメントルートへの追加は
document.body.appendChild
としています。
これは違和感がありますが、問題なく動いているようです
これでいいのでしょうか?
518Name_Not_Found:2014/04/13(日) 15:30:16.81 ID:???
>>517
意味がわからない。
ドキュメントルートは document.documentElement であって document.body はドキュメントルートではないと思うが。

それから「ドキュメントルートへの追加」の意味は?
それがドキュメントルートに子要素を挿入するという意味なら document.documentElement.appendChild とすべきでは?だと思うが。

> これは違和感がありますが、問題なく動いているようです
違和感の内容をもっと具体的に。
519Name_Not_Found:2014/04/13(日) 15:41:32.34 ID:???
document.firstChild はDOCTYPE宣言になるんだよね
ドキュメントルートが要素に限定されるならhtml要素が正しいけど
520Name_Not_Found:2014/04/13(日) 15:48:46.82 ID:???
そもそも、DOMにドキュメントルートという概念があるのかな?
HTML文書のルートには DOCUMENT_TYPE_NODE と DOCUMENT_NODE と ELEMENT_NODE が存在できるわけで唯一のドキュメントルートはないような
521Name_Not_Found:2014/04/13(日) 16:01:32.77 ID:???
ありがとうございます
documentElementとbodyの関係が良く分かってなかったです
bodyはdocumentElementの子で、
document.bodyはdocumentElementのchildNodeとしてのbodyのエイリアスのようですね
どっちもdocumentのプロパティなので混乱していました
522Name_Not_Found:2014/04/13(日) 16:14:46.42 ID:???
>>520
> そもそも、DOMにドキュメントルートという概念があるのかな?
あえてあげるなら、DOCUMENT_NODE が Document Object Model におけるドキュメントルートだろう
523Name_Not_Found:2014/04/13(日) 18:03:07.87 ID:???
イベントのオフセット座標って
イベントを投げた要素(target)を基準とした座標なのか
イベントハンドラで受け取った(currentTarget)を基準にした座標なのか
分かりにくいよね
だからfirefoxではオフセット座標を設定しないのかな?
524Name_Not_Found:2014/04/13(日) 18:16:09.93 ID:???
仕様書読めばわかることをわかりにくいといわれてもなあ…
525Name_Not_Found:2014/04/13(日) 18:23:55.18 ID:???
だって、ここにいるのはプログラマじゃないし。
デザインの延長であんなかっこいい動きするデザイン作ってって
クライアントに言われてjQueryプラグインぐぐるしか出来ないレベルですよ?
526Name_Not_Found:2014/04/13(日) 18:53:29.99 ID:???
ここにいるのがプログラマじゃなくてWebデザイナなんて誰も決めてないけどね
誰かさんはそうしたいみたいだけど
527Name_Not_Found:2014/04/13(日) 18:57:21.55 ID:???
同意を求められているならわかりにくいとは思わない

プログラマかWebデザイナかなんてどうでもいい
レッテルを貼る人は差別意識が高すぎる
528Name_Not_Found:2014/04/13(日) 18:58:23.53 ID:???
じゃあfirefoxがオフセット座標を設定しない理由を合理的に説明できるのかな?
やたら煽ってる自称プログラマーさんには無理だろうけど。プゲラ。
529Name_Not_Found:2014/04/13(日) 19:05:16.55 ID:???
>>528
煽った時点で君も同レベルだよ
530Name_Not_Found:2014/04/13(日) 19:07:40.42 ID:???
new Date(2014, 4, 8)
Thu May 08 2014 00:00:00 GMT+0900

わろたw
531Name_Not_Found:2014/04/13(日) 19:09:54.40 ID:???
他の座標を使って計算可能なんだからjQueryが何とかすべきだな>offset
532Name_Not_Found:2014/04/13(日) 19:13:35.20 ID:???
イベントのオフセット座標が何を示しているのかわからないのは俺だけか
イベント関連オブジェクトにoffsetの名のつくプロパティが見つからないのだが
http://www.w3.org/TR/DOM-Level-3-Events/

前からこういう質問はあるが、正式名称で書いてくれないものかね…
533Name_Not_Found:2014/04/13(日) 19:28:49.14 ID:???
オフセット座標としては HTMLElement#offsetLeft があるが、イベントは関係ないな
http://www.w3.org/TR/cssom-view/#extensions-to-the-htmlelement-interface
event.offsetX はIE独自拡張だったはずだが、これのことか?
http://msdn.microsoft.com/en-us/library/ie/ms534305.aspx

いずれにしても仕様通りに動かなければバグだし、仕様通りなら仕様としか言いようがない
Firefoxのみ再現するならMDNの仕様をあたるべきだろう
「わかりにくい」とか主観的な事はどうでもいいので仕様を確認する癖をつけたほうがいい
534Name_Not_Found:2014/04/13(日) 21:40:27.92 ID:???
独自拡張?chromeにもあるが?
535Name_Not_Found:2014/04/13(日) 21:52:10.07 ID:???
>>534
確かにあるようだが、標準仕様にある?
標準がないなら仕様が各々違っても仕方ない
536Name_Not_Found:2014/04/13(日) 22:07:32.03 ID:???
MouseEventじゃないEventにoffsetXがあるブラウザがあるってこと?
537Name_Not_Found:2014/04/13(日) 22:22:05.35 ID:???
2つのjsファイルがあり、それぞれで
$(function(){});
の範囲にある関数群を、同じ名前空間内に
マージ?する方法ってありますか?

複数のファイルに分割して開発されたライブラリを
1つのHTML内で取り込んで、それぞれの名前空間を
意識すること無く使いたい、という意図なのですが。。
538Name_Not_Found:2014/04/13(日) 22:23:14.37 ID:???
>>536
何を言いたいのかわからない
539Name_Not_Found:2014/04/13(日) 22:39:42.56 ID:???
標準になければ独自格調で間違ってない
よって、各々が足並みを揃える必要もなければ保証もない
540Name_Not_Found:2014/04/13(日) 22:42:07.58 ID:???
MouseEvent#offsetXは標準仕様にあるけど、Event#offsetXは独自拡張って話だよね
541Name_Not_Found:2014/04/13(日) 22:51:24.87 ID:???
>>540
MouseEvent#offsetX が DOM L3 Events で見つからないのだが、どこに書かれているのだろうか
http://www.w3.org/TR/DOM-Level-3-Events/#h4_events-mouseevents
542Name_Not_Found:2014/04/13(日) 22:55:48.13 ID:???
>>540
いや、そんな話は誰もしてない
543Name_Not_Found:2014/04/13(日) 22:57:27.89 ID:???
>>541
>>533のCSSOM View Moduleにある
テンプレ>>5にも日本語訳へのリンクがある
544Name_Not_Found:2014/04/13(日) 23:27:43.15 ID:???
http://jsdo.it/Pontyasan/jrIY

ギャル文字に変換するモノを作っていたのだが、うまく動かん。
誰か助けて下さい
545Name_Not_Found:2014/04/13(日) 23:33:30.93 ID:???
>>543
ありがとう
CSSOM View Module に DOM Events が定義されているとは思わなかった
546Name_Not_Found:2014/04/13(日) 23:35:51.58 ID:fN6/maOL
                  ,.‐-、,_          r‐----------┐
   / ̄ ̄ ̄ ̄ ̄ ̄ヽ,    "‐、,_ ,l         |_______  |
   `---------y  /           ,ノヽ、          .|  |
      ,.-、 .,/ /           / ./           |  |
     ヽ、 `''`,/          ,.,/ /            |  |
       \  ヽ        _,../ _.,/       r‐--------┘ .|
        .`'、,ノ      <'’ _,/         |__________.|
                 ゙‐'’
547Name_Not_Found:2014/04/13(日) 23:40:54.11 ID:???
>>544
> result = s.replace(new RegExp(origin[i],'g'),gal[i]);
result には一番最後に replace した結果が格納される
548Name_Not_Found:2014/04/14(月) 00:12:36.89 ID:???
document.getElementBy?Id
より
document.body.getElementById
の方が対象を絞りこんだ分速いですか?
549Name_Not_Found:2014/04/14(月) 00:18:03.36 ID:???
>>547
あー...なるほど...
どうしたらいいんでしょうか。設計からやり直すべきですかね
550Name_Not_Found:2014/04/14(月) 00:33:04.50 ID:???
>>547
自己解決しました。
アドバイスありがとうございました
551Name_Not_Found:2014/04/14(月) 01:42:58.01 ID:???
>>537
ソースを文字列にしてマージしてeval()するぐらいしか思いつかないな
552Name_Not_Found:2014/04/14(月) 05:46:18.10 ID:???
>>537
なぜファイルを分割した?
ファイルは役割ごとに分割するもの。

正しく分割できてる=役割が違うなら同じ名前空間で動かすべきではない。
役割が同じなら、ファイルを分けるべきではない。
というか名前空間ってどういう意味で使ってるんだ?

コードが長くなったのなら、その中で役割を見つけてその役割ごとに分けるべきだ。
コードが長くなったから、この行以降を別のファイルに分割しました。てへっ。
なんて言おうものなら、プログラミングの基本をわかってないとしか言えない。

まあ、ファイル分割したいならRequireJSを使えとしかいうことはないな。
553Name_Not_Found:2014/04/14(月) 07:33:51.89 ID:dGxKKfWi
一つのhtml内でアンカー移動してきた直後でのみ特定の関数を実行するにはどうしたら良いですか?
554Name_Not_Found:2014/04/14(月) 08:39:57.63 ID:???
hrefに'#'が入ってるか調べるだけじゃ駄目か。
onload時にdocumentを走査して、<a>にフック関数を付けて回るとか。
555Name_Not_Found:2014/04/14(月) 10:13:59.57 ID:???
556Name_Not_Found:2014/04/14(月) 11:00:56.11 ID:???
>>548
document.body.getElementById はプロパティアクセス演算子のコストが余計にかかるから一概には言えない
getElementById は元々十分に速いから有意な差は得られない可能性もあるが、実際に計測してみるべし
勿論、実装毎の差はあるだろうから主要ブラウザ全てを試す必要がある
557Name_Not_Found:2014/04/14(月) 11:18:57.08 ID:???
>>543
原文には「11 Extensions to the MouseEvent Interface」があるけど、和訳には11節自体が存在しないね
和訳は "2014 年 2 月 6 日付 編集者草案" となっていて最新版に追従しているかに見えるけど、Previous Version が原文より古い日時であることから和訳は最新版(2013-12-17)に追従してないと思われる
"This Version" に原文のバージョンが書かれていればいいのにね…
http://www.w3.org/TR/cssom-view/#extensions-to-the-mouseevent-interface
http://www.hcn.zaq.ne.jp/___/WEB/cssom-ja.html
558Name_Not_Found:2014/04/14(月) 13:34:07.41 ID:???
>>557
そっちはCSSOMの和訳。CSSOM View Moduleの和訳はその下
ついでにこれらは作業草案じゃなくて編集者草案を訳したもの
559Name_Not_Found:2014/04/14(月) 14:04:50.01 ID:???
hoge.comというサイトに一番多いアクセスは日本からでしょうか?
560Name_Not_Found:2014/04/14(月) 14:20:18.22 ID:???
JavaScript開発者のブレンダン・アイクがアンチ同性愛者だと分かりましたがどうすればいいですか?
JavaScriptの自由さを愛していたので困惑しています
561Name_Not_Found:2014/04/14(月) 14:54:05.22 ID:???
>>554-555
ありがとうございました!
562Name_Not_Found:2014/04/14(月) 15:13:25.46 ID:???
>>558
申し訳ない
確かにCSSOM View Module 日本語訳に書いてあった
http://www.hcn.zaq.ne.jp/___/WEB/cssom-view-ja.html#extensions-to-the-mouseevent-interface
563Name_Not_Found:2014/04/14(月) 15:20:45.64 ID:???
オブジェクトの継承に関する質問です
それぞれ既に存在するオブジェクトAからオブジェクトBへ
新たに継承にある状態を作るにはどうすればいいのでしょうか

var obj1 = {1:'one'}
var obj2 = {2:'two'}
//obj2.__proto__ = obj1; だと動かない環境が多い
Object.getPrototypeOf(obj2); //obj1 としたい
564Name_Not_Found:2014/04/14(月) 16:32:13.63 ID:???
やたらJSが重くなる。とくにドラッグがガクガクになるので分かりやすい
→PCを再起動するとキュンキュンに戻る

っていうことがchromeでだけあるんですが、再起動せずにキュンキュンにする方法ありませんか?
重くなった時にもfirefoxやieでは重くありません
普通に考えたらリロードのタイミングでキュンキュンに戻って欲しいのですが
そうはならないし、
chrome自体を再起動させても遅いのです
565Name_Not_Found:2014/04/14(月) 16:36:52.14 ID:???
なんとなくwindows updateが更新されたあとにそうなる気がします
というか、普段はスタンバイで、windows updateがあった時くらいしか再起動しないのですが
chromeだけが遅くなるのが良く分かりません
566Name_Not_Found:2014/04/14(月) 16:41:24.27 ID:???
なんとなくもっさりしてきたように感じていたATOKもあきらかにキュンキュンでした
chromeの問題ではなかったようです
失礼しました
567Name_Not_Found:2014/04/14(月) 16:51:57.34 ID:???
PC再起動と同時にchromeもバージョンアップされたみたいで
横ホイールスクロールがまーた使えなくなってます
シフトキーで逆にならないだけマシだけど
何故こういうアホなことをするのか・・
568Name_Not_Found:2014/04/14(月) 16:55:23.08 ID:???
chromeスレで、chromeが遅くなったらバージョンアップが来てた、という書き込みがあったので
chromeのupdateが来る→chrome遅くなる→ATOKも遅くなる
の順かもしれません
569Name_Not_Found:2014/04/14(月) 16:59:32.93 ID:???
お前邪魔
570Name_Not_Found:2014/04/14(月) 17:05:12.52 ID:???
>>569
問題および解決の可能性を書いただけですが?
同様の疑問を持つ人もいると思いますよ
あなたはもっと想像力が働かせた方がいいようですね
571Name_Not_Found:2014/04/14(月) 17:29:47.46 ID:???
>>563
> //obj2.__proto__ = obj1; だと動かない環境が多い
具体的に動かない環境とは?

> Object.getPrototypeOf(obj2); //obj1 としたい
obj1になる必要性って本当にあるの?
単にobj2の親オブジェクトが何かを知りたいだけではないの?
572Name_Not_Found:2014/04/14(月) 23:31:24.76 ID:???
>>570
初めからJavaScriptの話題でないことは明らかだったのでスレ違いです
書き込む前にそこが適切なスレッドであるかを必ず確認してください
573Name_Not_Found:2014/04/15(火) 00:42:29.57 ID:???
>>572
あきらかではありませんよ
JSの動作が遅いのですから。
想像力を持って下さい。
574Name_Not_Found:2014/04/15(火) 01:12:12.10 ID:???
問題を切り分けることができない奴をバカって言うんだよ
575Name_Not_Found:2014/04/15(火) 02:13:27.07 ID:???
問題の切り分けは解決の過程で行われるものです
アホは黙っておいて下さいね
576Name_Not_Found:2014/04/15(火) 02:19:00.64 ID:???
フォームコントロールに入力されている文字をチェックする処理があります
keyupでその処理をしていたのですが、
IMEがオンの時は、keyupが発生しない場合があります。
このような場合、keyupとkeydownの両方で同じ処理をすべきでしょうか?
それだといまいちスマートじゃない気がします
もっとスマートな方法があれば教えて下さい
577Name_Not_Found:2014/04/15(火) 03:44:11.70 ID:???
>>575
こんなところでやんなボケ
578Name_Not_Found:2014/04/15(火) 07:36:42.24 ID:???
>>573
> JSの動作が遅いのですから。
Google Chromeのみの現象ならブラウザスレで話題にすべきでしょう
PC再起動で直るのなら、Google Chrome以外のアプリ起因、PC原因である可能性もありますよね

> 問題の切り分けは解決の過程で行われるものです
切り分けしてから書き込むべきではないですかね
切り分け前の不確定情報に振り回される他のユーザが迷惑とは想像できないのでしょうか
切り分け手段が不明だったとしてもGoogle Chromeスレに書き込まなければ、一般のGoogle Chromユーザに伝わらないのでは?
>>567は明らかにJavaScriptと無関係ですよね
Google ChromeスレでGoogle ChromeのJavaScriptエンジン起因と確定してから情報を寄せるのならまだわかりますが
579Name_Not_Found:2014/04/15(火) 14:00:12.21 ID:???
結果論に過ぎませんね
それに興味のない書き込みをスルーするのは2chユーザーにとっては必須のスキルなのですから
単にスルーすればいいだけです
580Name_Not_Found:2014/04/15(火) 14:28:44.59 ID:???
気に入らないならスルーしろって、反論できないカスの常套句だなw
581Name_Not_Found:2014/04/15(火) 14:33:31.16 ID:???
事実を語っているだけです
582Name_Not_Found:2014/04/15(火) 14:41:32.67 ID:???
むしろjavascriptの質問スレでjavascriptに関係ない質問するお前が出て行けばいいと思うの
583Name_Not_Found:2014/04/15(火) 14:53:22.61 ID:???
>>579
うぜえ
584Name_Not_Found:2014/04/15(火) 15:34:23.28 ID:???
>>583
感情論でしかないですね
585Name_Not_Found:2014/04/15(火) 15:37:05.57 ID:???
bootstrap3.1はIE8からの対応です
しかしシェア的には、まだIE7も対応すべきだと思います
やはりbootsrap2.3を使った方がいいのでしょうか?
586Name_Not_Found:2014/04/15(火) 15:37:50.93 ID:???
答えが出てるのになぜ聞くのか
587Name_Not_Found:2014/04/15(火) 15:44:47.41 ID:???
>>586
アスペですか?
588Name_Not_Found:2014/04/15(火) 16:47:53.39 ID:???
>>585
対応しなければシェアが下がってくれるので対応するべきではない
安易な考えで対応するなど悪の片棒を担ぐに等しい
589Name_Not_Found:2014/04/15(火) 19:19:23.50 ID:???
>>586
スルーしとけ
590Name_Not_Found:2014/04/15(火) 20:14:37.42 ID:???
お前ら冷たすぎ
自分がやってることを逐一他人に報告して関心を持ってもらいたいさみしがりやな娘なんでしょ
将来的には回答者として貢献してくれるようになるかもしれないんだから暖かく見守ってやれよ

>>563
__proto__及びsetPrototypeOfが使えない環境でそのようなことを考える事自体がナンセンス
プロトタイプベースのコーディングがまともに出来るようになったのはそれらが導入されるES6から
それより前では諦めるのが吉、実際途中からの適応は出来ない
591Name_Not_Found:2014/04/15(火) 20:32:10.58 ID:???
>>588
ありがとうございます
そういう考え方もありますね
592Name_Not_Found:2014/04/16(水) 00:50:41.20 ID:???
>>576
その手の問題は古くからあるんだけど
結局、その仕様にGoを出せる人が納得するように、場合わけすることになると思うよ

今のところ、一律にこうするのが正解ってのはないと思う
593Name_Not_Found:2014/04/16(水) 02:10:32.99 ID:???
>>576
IME変換も考慮するなら入力中ではなく、フォーカスが外れるタイミング(onblur)でチェックする方が良い
IME変換中の入力文字を制御する確実な方法は今のところ確立出来ていない
(そもそも、IMEのAPIが用意されていない)
594563:2014/04/16(水) 03:26:55.37 ID:???
>>571
環境について、古い記事でChromeやFirefoxでサポートと目にした事と
StackOverflowで旧世代IEやOperaでは動作しないと見たのでそう書きました
好奇心からの質問だったので必要性は特にないです

>>590
そもそも以前はサポートされていない方法だったんですね
最近触り始めたものでその辺の経緯がわからず混乱していました

お陰で今日もぐっすり眠れそうです
お二方ともレスありがとうございました
595Name_Not_Found:2014/04/16(水) 11:42:55.62 ID:???
インターバル間隔の現実的な最小値は16くらいですか?
596Name_Not_Found:2014/04/16(水) 11:49:47.95 ID:???
>>595
何のインターバル感覚ですか?
「現実的」の定義は何ですか?
597Name_Not_Found:2014/04/16(水) 12:07:58.18 ID:???
setIntervalに決まってますが?
現実的とはそれ以上小さくしても変化がない値です。
こんなこと言う必要もないと思いますがねぇ
598Name_Not_Found:2014/04/16(水) 12:22:39.01 ID:???
>>597
言葉を省略した為にすれ違った事例を何度も見ているので確認しました
質問時に物事を正確に述べるのは質問者の義務だと思いますが、理解してもらえなくてももう結構です
(差別的な物言いからは嫌悪感しか感じませんが、これで回答してもらえると本気で思ってるんですかね…)
599Name_Not_Found:2014/04/16(水) 12:27:19.11 ID:???
はぁ・・・そうっすか・・・
600Name_Not_Found:2014/04/16(水) 13:23:52.68 ID:XrcwvXZL
済みません、他でスレ違いだったようで、こちらに来ました。

このサイトの画像をランダムに表示(リンク付き)なのですが、
リンクを別ウィンドで開かせる場合はどうすればいいのでしょうか?
ttp://javascript.eweb-design.com/0804_ri.html
601Name_Not_Found:2014/04/16(水) 14:50:56.66 ID:???
lodashに沢山関数があって勉強するのが大変です
「これはよく使う」というものがあれば教えて下さい
602Name_Not_Found:2014/04/16(水) 14:57:11.85 ID:???
他人と意思疎通するって難しいよ
なんとなくできてる気分になりがちだけど
603Name_Not_Found:2014/04/16(水) 23:40:43.57 ID:???
ライブラリがミニファイバージョンを提供していない時がありますが
そういう場合、自分でミニファイしますか?
604Name_Not_Found:2014/04/16(水) 23:45:44.25 ID:???
ミニファイバージョンを提供し、ファイル名は*.min.js
ファイル名にはバージョン名を必ず含む
といった正規化をライブラリ作者にはお願いしたいものです
605Name_Not_Found:2014/04/17(木) 02:15:52.89 ID:???
>>601の件ですが
underscoreの記事で勉強するのがよさそうでした
http://gihyo.jp/dev/serial/01/underscorejs/0001
606Name_Not_Found:2014/04/17(木) 03:39:54.68 ID:???
>>600
「javascript 別ウィンドウ」で検索すれば?
window.open で一杯出てくるよ

イヌでもわかるJS
ttp://www.red.oit-net.jp/tatsuya/java/winopen.htm
607Name_Not_Found:2014/04/17(木) 04:17:36.33 ID:???
配列を返す関数に直接配列演算子を付ける書き方はどのブラウザでもOKなのでしょうか?

"hoge-moge".split('-')[1]

など。
chromeでは問題ありませんでした
608Name_Not_Found:2014/04/17(木) 11:32:02.10 ID:???
その書き方便利だよね
609Name_Not_Found:2014/04/17(木) 11:43:17.64 ID:???
戻り値が確実に配列オブジェクトなら問題ない。
610Name_Not_Found:2014/04/17(木) 12:04:49.47 ID:???
ありがとうございました
611Name_Not_Found:2014/04/17(木) 13:31:14.86 ID:???
DOMエレメントが重なっていた場合、下に伝播していく、と認識していたのですが
親子関係にない要素同士が見た目上重なっている場合には、
上をクリックしても伝播しないようです
構造上包含関係にあり、見た目上重なっている場合だけイベントは伝播する、
という認識でいいのでしょうか?
612Name_Not_Found:2014/04/17(木) 17:35:43.70 ID:???
>>611
行間の省略が多過ぎてわかりにくいぞ
上に?下に?上を?

>>600
target 属性
613Name_Not_Found:2014/04/17(木) 18:06:42.14 ID:K/BKNPXl
>>606
>>612
他のソースから以下を取ってきて挿入しましたが、
どちらも上手く行きません。
tar = 'target="_blank"';
window.open(myTable[myRnd]); 

たぶん>>600のソースでURLが「jmp」と表記されているので
上手く行かないんだと思いますが、どうすれば新規ウインドになりますか?
あのソースに合うコードを教えていただければ助かります。
614Name_Not_Found:2014/04/17(木) 19:05:54.83 ID:???
>>613
その記事のソースはさっさと捨てて、ゼロから始めるべき

スクリプト以前に、中身がリンク1 個
<a href="適当なURL">適当な文</a>
だけのHTML を作って
target="適当な名前" を <a> に追加してみる所から
615Name_Not_Found:2014/04/17(木) 21:41:27.51 ID:???
616Name_Not_Found:2014/04/17(木) 21:48:52.51 ID:???
>>556
document.body[0]じゃなくていいの?
617Name_Not_Found:2014/04/17(木) 21:55:22.07 ID:???
親子関係にない養子同士が見た目上が重なっている
618Name_Not_Found:2014/04/17(木) 22:55:39.97 ID:???
イベント伝播は、純粋にノード構造に依存するのですね
子要素を親要素の外側に配置して子要素をクリックしても、
親要素にイベントが伝播しました
考えれば当たり前のことなんですが、ずっと勘違いしていたようです
ありがとうございました
619Name_Not_Found:2014/04/17(木) 23:49:19.36 ID:???
>>614
ゼロからやらないとダメですか?
頑張ってみます
620Name_Not_Found:2014/04/18(金) 11:16:21.87 ID:???
>>616
試せばわかるんじゃないかな
621Name_Not_Found:2014/04/18(金) 11:44:38.67 ID:???
body[0]って何だよ
bodyは配列じゃねーだろ
622Name_Not_Found:2014/04/18(金) 13:02:04.81 ID:???
以前、chromeのコンソール出力はログ表示に追従してスクロールしていって欲しいと書きましたが
いつの間にかそうなっていることに気付きました
横スクロールの再改悪には落胆しましたが、進化もしてますね(^O^)
623Name_Not_Found:2014/04/18(金) 14:52:46.78 ID:???
>>621
getElementsByTagNameとは違うんですね
624Name_Not_Found:2014/04/18(金) 15:29:08.56 ID:???
画面に表示される要素数により、ドラッグ時のスムーズ具合が違うのですが
処理自体は増えないはずなので不思議に思い
console.timeで測ったところ
ドラッグ処理内の処理速度は大差ありませんでした。
しかしドラッグ処理とドラッグ処理の間隔が、要素数が多い時にははっきりと増えていました。
documentのonmousemoveの間隔は、
documentが包含するDOMエレメントが増えるほど遅くなるのでしょうか?
625Name_Not_Found:2014/04/18(金) 16:08:33.60 ID:???
http://jsbin.com/tojagaxu/1

mousemoveで四角を動かしてドラッグ状態を再現し、
consoleにmousemoveの間隔を出力するようにしました
左上の四角をクリックするたびにDOMをページに追加します
要素がない時とある時では、
マウスを動かした時の動きや間隔が変わってきます
このことからDOMエレメント数がmousemoveのスムーズさにも影響するといえると思います
しかしそうなると、スムーズさを保つためには
画面から出たエレメントを削除するなどしないといけないということでしょうか
そんな面倒くさいことを他のアプリもしているのでしょうか?
626Name_Not_Found:2014/04/18(金) 17:15:32.09 ID:???
どんどんページを伸ばしていけるオートページャがありますが
要素が増えていくから、
そのままだとページがどんどん重くなると思いますが、
見えなくなった要素の削除とかしてるのかなぁ?
だとしたら相当気の利いたA級開発者だと思います
627Name_Not_Found:2014/04/18(金) 17:53:17.82 ID:???
ttp://oshiete.goo.ne.jp/qa/4378546.html
の返信の通りにやると、textareaの最後尾に追記されてしまいます
カーソルの位置に追加するようにするにはどう書き換えたらいいですか?
ご教示いただけたら幸いです
628Name_Not_Found:2014/04/18(金) 20:50:22.16 ID:vMUdk//c
質問させていただきます。
現在、Javascriptの勉強中で、簡単なゲームとして3目並べを作成しております。
JSでテーブルを作成し、その中のTD要素がクリックされた時、そこの内容を変化させようとしています。
しかし、onClickで関数を指定しているものの、その関数が定義されていないとエラーが出てきます。
これは、JSの実行順序の関係でうまく動作していないのでしょうか。
もしくは、それとは別に原因があるのでしょうか。
よろしくお願いいたします。
629Name_Not_Found:2014/04/18(金) 20:51:58.03 ID:???
window.onload = function(){
var turn = 0;
var color = ["●","◯"];
makefield();

function makefield(){//maxマスのフィールドを作成する
var max = 3;
var table = "<table>";
for(i=0;i<max;i++){
table += "<tr>";
for(j=0;j<max;j++){
table += "<td id=\"" + i + j + "\" onclick=\"clck(" + i + "," + j + ")\"> </td>";
}
table += "</tr>";
}
table += "</table>";
document.getElementById("result").innerHTML = table;
}

function clck(i,j){//クリックされた箇所に◯もしくは●を挿入
var clck = document.getElementById("" + i + j);
if(clck.innerHTML == " "){
clck.innerHTML = color[turn];
turn = (turn + 1) % 2;
}
}
}
</script>
630Name_Not_Found:2014/04/18(金) 21:40:37.90 ID:???
>>628
function clck がグローバルスコープではないから
631Name_Not_Found:2014/04/19(土) 01:32:39.72 ID:???
>>624-626
イベントをその要素で取得する場合は、stopPropagation で、
イベントのバブリング(伝播)を止めたら?

止めないと、その要素の親、先祖方向へとイベントが伝わる
ただし、そのイベントを親や先祖でも、
使いたいなら止めない方がよい
632Name_Not_Found:2014/04/19(土) 01:38:44.01 ID:???
バブリングの問題じゃないのでは・・?
ノードに要素が増えたら、動作が遅くなる
これは絶対的な真理だと思います
ただ削除までせずとも
display:noneにしても速度が回復するということも分かりました
633Name_Not_Found:2014/04/19(土) 02:43:05.34 ID:???
>>624-626
ブラウザによって得手不得手はあるだろう
例えば hit-testing のアルゴリズムが float 配置には最適化されていないため
描画の更新領域の計算に時間食ってるとか
(floatが千個もあるようなレイアウトは通常 想定されていない)
634Name_Not_Found:2014/04/19(土) 08:56:28.10 ID:???
>>630
ありがとうございます。
function clckをグローバルスコープ(グローバル関数?)にするには、
単にwindow.onload = function(){}から取り出せば良いのでしょうか?

window.onload = function(){ }で囲ってしまったために、ローカルスコープになってしまい、
その結果として、TD要素から見えなくなってしまった、と推察しました。
実際、window.onload = function(){ }から各関数を取り出して実行したところ、
今度はDIV要素のresultがIDから取得できなくなってしまいました。
解決方法として、HEADタグ内に関数だけを定義し、BODYタグ内最下部で関数を呼び出したところ、問題なく動作しました。
HEADタグ内で各関数を定義した後、実行自体はBODYタグ内最後でやるべきなのでしょうか?
もしくはもっとクールな方法がありますでしょうか?
635Name_Not_Found:2014/04/19(土) 10:21:47.74 ID:???
>>634
>DIV要素のresult
<DIV id=result> にtableが入ってるのか?
(ならば書いとかないとわかりにくい)

関数を window.onload から外に取り出したために
BODY が読み込まれる前に、関数の中の、
まだ存在しない DIV にアクセスするコードが
実行されているためだろう
(ゆえに、BODYの末尾に置いたら動作した)

したがって、HEAD内に置いたままにしたければ
そのコードについては onload の中で実行されるようにすればよいことになる

それとは別にグローバルにしたい内部関数を外側のグローバル変数に代入する方法や、DOMだけ構築してからローカルスコープのイベントハンドラを登録する方法などやり方はいろいろあるが
636Name_Not_Found:2014/04/19(土) 11:04:08.78 ID:???
この2つの関数って日本語文字列でバグや、その他バグがないか
わかりますでしょうか?
http://phpjs.org/functions/basename/
http://phpjs.org/functions/pathinfo/
637630:2014/04/19(土) 11:32:14.57 ID:???
>>634
addEventListenerを使用すれば関数スコープ内で完結できる
基本、関数スコープで完結するコードにしようとしているようなので、わざわざグローバルスコープを汚す必要はない

>>635
> <DIV id=result> にtableが入ってるのか?
#result内にtable要素がある事は>>629から推察できる
最も、>>629>>628と同一人物であることが明示されてないので文脈から判断したが
名前にレス番を入れない質問者が多くて困るな
こういう誤解を減らすためにもそうするべきだと思うのだが
638Name_Not_Found:2014/04/19(土) 11:38:39.66 ID:???
>>636
自分で試せる事は試せるだけ試してから質問してくれ
639Name_Not_Found:2014/04/19(土) 12:35:22.27 ID:???
>>633
再現コードのため分かりやすく書いただけで、
現に遅くなっている実際のコードではfloatは使ってません
というか、ブラウザの得手不得手は本質じゃないでしょう
どんなブラウザであっても、floatを使ってあってもなくても、
画面にDOM要素が増えるほどイベントは遅くなると思いますが。
このケースはむしろ単純なDOMなので、数千個加えないと遅くならなかったのです
内部に複数のDOMを含む複雑なDOMの場合はもっと少ない段階で遅くなります
640Name_Not_Found:2014/04/19(土) 12:36:58.72 ID:???
>>629のコードを添削したくてしょうがないなw

まず、見た目(HTML)とコードは分離するべきだ。
つまりtableはHTMLでそのまま書いて、
コードからtableを生成しないようにする。
641Name_Not_Found:2014/04/19(土) 12:38:35.11 ID:???
と思ったら、マス目は可変なのか。
それもtableで書こうと思えばかけるが
ちょっと厄介だな。
642Name_Not_Found:2014/04/19(土) 12:48:20.64 ID:???
>>638
はい
643640:2014/04/19(土) 13:08:44.79 ID:???
あきた。

>>629
・タグの要素としてのonclick=は使わない。DOMに直接イベントを割り当てる。
・tdに対してイベントを割り当てるのではなく、table(もしくはその上の要素)にイベントハンドラを割り当てる。だからidも不要。
・文字連結はrepeatメソッドを使う。ループは不要になると共に一行で終わっちゃうのでmakefield関数にしなくて良い。
・全角スペースはやめて、スタイルシートで書く。

まあ指摘点はこのぐらいだな。
644Name_Not_Found:2014/04/19(土) 13:32:32.08 ID:???
applyでthisを指定したくない時は何を渡したらいいんですか?
null?undefined?
645Name_Not_Found:2014/04/19(土) 13:57:03.22 ID:???
lodashで配列同士の同一性をチェックしたいのですが
_.differenceの返り値のlengthが0か調べる以外の方法はありますか?
いまいちスマートじゃない気がします
646Name_Not_Found:2014/04/19(土) 17:35:57.24 ID:???
>>645の件ですが_.isEqualが使えました
647Name_Not_Found:2014/04/19(土) 18:42:31.86 ID:???
>>645
あぁ、それならisEqualが使えるよ。
648Name_Not_Found:2014/04/19(土) 19:33:05.71 ID:???
ありがとうございました
649Name_Not_Found:2014/04/19(土) 20:16:03.99 ID:???
jqueryでonscrollをdocumentにデリゲートしたのですが、イベントが発生しません
デリゲートせずに要素に直接ハンドラを付けたらイベントが発生しました
何故ですか?
650Name_Not_Found:2014/04/19(土) 21:40:18.94 ID:???
>>649
うむ、それはようそがいだな。
651628:2014/04/19(土) 22:31:43.84 ID:???
>>635
失礼しました。仰るとおりで<div id = "result"></div>でbody内に記述してあります。
JSでこの中に可変のtableを作成していました。

HTMLファイルが読み込まれてからの実行順を理解しないといけないと思いました。
勉強します。ありがとうございます。

>>637
アドバイスありがとうございます。
window.onload(){} 内に各関数を定義し、TD要素にイベントハンドラを設定するのではなく、
addEventListenerを試しました。
どの位置が押されたのかの情報が必要なため、以下のように呼び出し先の関数(clck)に引数を設定しました。

function addListener(max){
for(var i=0;i<max;i++){
for(var j=0;j<max;j++){
var a = document.getElementById(i + "" + j);
a.addEventListener( "click", function(){clck(i,j)});
}
}
}

実行してみると、どこをクリックしてもclck(5,5)が実行されてしまいます。
無名関数を使って引数を指定したために、すべての設定が最後のもので統一されてしまったのでしょうか。
652628:2014/04/19(土) 22:32:23.20 ID:???
>>640-641,643
仰るとおり、マス目を可変にしているため、コードからtableを生成しています。

>・タグの要素としてのonclick=は使わない。DOMに直接イベントを割り当てる。
onclickの代わりにaddEventListenerを試してみましたが、上記の通りです。。

>・tdに対してイベントを割り当てるのではなく、table(もしくはその上の要素)にイベントハンドラを割り当てる。だからidも不要。
クリックによってイベントが実行できるように思えますが、
IDがないとどこがクリックされたかが特定できないと思うのですが。

その他、ありがとうございます。
試してみます。
653Name_Not_Found:2014/04/19(土) 23:10:07.12 ID:???
> IDがないとどこがクリックされたかが特定できないと思うのですが。
できる。
654Name_Not_Found:2014/04/19(土) 23:17:00.60 ID:???
やり方書けよカス
655Name_Not_Found:2014/04/19(土) 23:32:29.43 ID:???
それぐらい自分で調べろやw
俺が教えないのは、自分のためだ。

楽しいからなw
656628:2014/04/20(日) 00:52:53.55 ID:???
>>653,655
返信ありがとうございます。
できました!

方法としては、おっしゃったとおり、tableタグにonclick"clck(e)"
でイベントハンドラを登録し、
clck関数で受け取ったevent(ここでは変数e)から targetプロパティでクリック元を特定出来ました。
あとは特定できた要素のinnerHTMLを変更するのみで、コードを短縮したままで実装できました。

上要素に割り当てたイベントハンドラから、子要素が押された場合でも特定できるとは想像していなかったので
大変勉強なりました。これは他部分でも生かせそうです。
おかげさまで1つ賢くなれました。ありがとうございます!

今度は、3目並べ(もしくは5目並べ)のCPU部分を作成していく予定です。
勉強しつつ、頑張ります。
本当にありがとうございました!
657Name_Not_Found:2014/04/20(日) 01:25:01.15 ID:???
>>656
3目並べと5目並べはだいぶ別のゲームな気がするが言いたい事は分かる
658Name_Not_Found:2014/04/20(日) 01:30:35.21 ID:???
だからonclick属性作るなって。
659Name_Not_Found:2014/04/20(日) 03:27:45.73 ID:???
>>656
イベントバブリング(伝播)
>>631

JSでは、DOM木が構築されてから、アクセスしないといけないので、
ページの読み込み完了のイベントを使うか、
bodyタグの最後に書けばよい
660Name_Not_Found:2014/04/20(日) 04:28:01.88 ID:???
>>651
イベントハンドラ中のi,jはイベントハンドラ設定時の値で固定されてるわけじゃなくて、外の値を参照してる
661Name_Not_Found:2014/04/20(日) 04:59:45.18 ID:???
onscrollハンドラの中でブレークすると、画面はまだスクロールしていません
このことからonscorollはスクロールする前に発生し、
preventDefaultすればスクロールが中止されると考えましたが、
preventDefaultしてもスクロールは止まりません。
何故でしょうか?
662Name_Not_Found:2014/04/20(日) 07:48:23.16 ID:???
>>624-626の件ですが、画面から消えた要素をdisplay:noneするようにしたら、
想像以上にキビキビ動くようになりました
スクロールごとに当たり判定して消したり出したりするコストは結構あるんじゃないと思っていましたが
それよりもノードの複雑性から来るコストの方が多かったようです
ありがとうございました
663628:2014/04/20(日) 11:40:52.61 ID:???
>>628-629
最終的に以下のようにしました。
・repeat文でtableの作成
・onclickではなく、addEventListenerによるイベント通知
・window.onload内で完結するコード
ありがとうございました!

window.onload = function(){
var turn = 0;
var color = ["●","◯"];
makefield();

function makefield(){
var max = 6;
var table = "<table>" + ("<tr>" + "<td></td>".repeat(max) + "</tr>").repeat(max) + "</table>";
document.getElementById("result").innerHTML = table;
document.getElementById("result").addEventListener("click",clck);
}
function clck(event){
if(event.target.innerHTML == ""){
event.target.innerHTML = color[turn];
turn = (turn + 1) % 2;
}
}
}

<body>
<div id="result"></div>
</body>
664Name_Not_Found:2014/04/20(日) 15:21:17.82 ID:???
>>661の件ですが、
onmousemoveでpreventDefaultしてもマウスカーソルの動きが止まりはしないので
スクロールが止まらないのは当たり前でした
665Name_Not_Found:2014/04/20(日) 23:28:00.81 ID:???
jqueryで要素のクライアント座標を得るにはどうしたらいいのでしょうか?
666Name_Not_Found:2014/04/21(月) 03:28:36.09 ID:???
>>665
jQueryの質問は下記へ

【jQuery】JavaScript ライブラリ総合質問所 vol.3
ttp://toro.2ch.net/test/read.cgi/hp/1369444026/l50
667Name_Not_Found:2014/04/21(月) 11:15:17.69 ID:???
>>665
.offset()
668Name_Not_Found:2014/04/21(月) 13:02:15.67 ID:???
ありがとうございました
669Name_Not_Found:2014/04/21(月) 17:57:58.52 ID:FR8PhSfW
日本政府からの支援の申し出に対する韓国でのメディア論調
http://momi9.momi3.net/tv/src/1398033658199.jpg

「韓国に対する救助支援を政治利用するのではないかという批判が相次ぐ」
「政治的下心が垣間見え、我が政府当局が苦慮している」
「国際平和貢献の事例として、集団的自衛権容認に向けた政治カードに利用した」

今日も平壌運転で、じつに結構なことです。


ちなみに、今朝の不治テレビ「とくダネ!」では現地被害者家族のインタビューで
どうして日本からの支援申し出を断ったのか、という部分に対して
「どうして民間からの支援申し出を断ったのか」という字幕に変えてました。
さすがは不治テレビ。
670Name_Not_Found:2014/04/21(月) 18:35:46.46 ID:???
どういうこっちゃ
671Name_Not_Found:2014/04/21(月) 19:10:32.40 ID:???
利用者の平均IQが高い技術スレにネトウヨコピペなんて効果あるわけないだろ
恥を知れ
672Name_Not_Found:2014/04/21(月) 19:35:18.87 ID:???
在日は早く祖国に帰れ
673Name_Not_Found:2014/04/21(月) 19:47:02.02 ID:???
ネトウヨ哀れw
674Name_Not_Found:2014/04/21(月) 19:49:13.31 ID:???
日本が嫌なら出てけよ
675Name_Not_Found:2014/04/21(月) 19:57:10.52 ID:???
お前が出て行けよ
カスが
676Name_Not_Found:2014/04/21(月) 20:05:47.25 ID:???
JavaScriptと無関係な話題はスルーかつ控えて頂きたく
677Name_Not_Found:2014/04/21(月) 20:57:33.28 ID:???
質問です
Javascriptで要素のスタイルを変更するのではなくスタイルシートを
.hoge .age{
width:100%;
}

.hoge .age{
width:50%;
}
みたいに変更する方法ってあるんでしょうか?
678Name_Not_Found:2014/04/21(月) 21:13:02.33 ID:???
可能
jqueryにそういうプラグインがあるのでそれを使うのが早い
679Name_Not_Found:2014/04/21(月) 21:13:06.80 ID:???
680Name_Not_Found:2014/04/21(月) 21:22:17.61 ID:???
>>678-679
document単位にあったとは・・・。ありがとうございます
初めてなんで直接書き込んでみます
681Name_Not_Found:2014/04/22(火) 01:54:55.31 ID:???
CSSに便乗質問です
insertRuleで"element.class{prop:value}"のようにルールを1つずつ追加しているのですが
これをまとめて
"element.class{prop:value} element#id{prop:value}"
のように複数のルールを一度に追加することってできますか?
682Name_Not_Found:2014/04/22(火) 16:54:54.49 ID:???
>>681
はい
683Name_Not_Found:2014/04/22(火) 17:11:02.34 ID:VhRYUY6k
yahooを別ウィンドウで開いて、別ウィンドウ側のURLを取得するというのをやってみようと思ったのですが、
以下のようにすると(1)はblank、(2)でyahooURLを取得できるんですが、
(1)でURLを取得できるようにするにはどうすればいいんでしょう?


function Test ()
{
var obj;
obj = window.open("http://www.yahoo.co.jp/","Test","width=400,height=600,location=yes");
alert(obj.window.location.href);//(1)
alert(obj.window.location.href);//(2)
obj.window.setTimeout(obj.window.close(),2);
}
684Name_Not_Found:2014/04/22(火) 19:49:13.95 ID:???
>>683
Yahooにaccess-control-allow-originでクロスドメインを許可するようお願いする
https://developer.mozilla.org/ja/docs/HTTP_access_control
685Name_Not_Found:2014/04/22(火) 20:42:01.44 ID:???
小技について質問
if(a=="a" || b=="a")を短くする方法ってありますか?
if(a || b=="a") ってやったらダメでした
686Name_Not_Found:2014/04/22(火) 21:10:19.64 ID:???
>>685
ない
687Name_Not_Found:2014/04/22(火) 21:24:29.75 ID:???
>>686
諦めやす!
688Name_Not_Found:2014/04/22(火) 21:58:46.10 ID:???
>>685
[a, b].indexOf("a") != -1
689Name_Not_Found:2014/04/22(火) 22:07:37.26 ID:???
lodashで_.any()みたいな感じの関数使う
690Name_Not_Found:2014/04/22(火) 23:10:18.98 ID:???
そんなことして誰得?
691Name_Not_Found:2014/04/22(火) 23:18:02.33 ID:???
プログラムが短くなるだろうが
692Name_Not_Found:2014/04/22(火) 23:27:59.64 ID:???
短くなってないwww
693Name_Not_Found:2014/04/22(火) 23:38:22.22 ID:???
そもそもlodashに_.anyなんてなかった
すまそ
694Name_Not_Found:2014/04/22(火) 23:39:59.98 ID:???
>>693
あるよ

http://lodash.com/docs#some
Aliases

_.any
695Name_Not_Found:2014/04/22(火) 23:47:50.32 ID:???
はわわ本当だね
でも見たら想定と違ってて、想定してたのと同じ関数はcontainsだった

var a = 3;
var b = 4;
var c = 3;

console.log(_.contains([a,b],c));
→true
696Name_Not_Found:2014/04/23(水) 03:22:01.78 ID:???
chromeはIME制御がうまくいってないようで
contenteditableで日本語入力してIMEオンのままbootstrapのボタンを押すと、
フォーカスは外れているのにキー入力だけがcontenteditable領域に行くという変な状態になります
firefox, ieはそんなことはありません
これをどう回避できるでしょうか?
あるいは関係者の方が見ていたらこのバグの修正をお願いします
697Name_Not_Found:2014/04/23(水) 15:04:31.15 ID:???
http://jsbin.com/zoxecica/1/edit

再現コード書きました
divで日本語入力→IMEオフにせずにボタンをクリック→その後キー入力
とすると、chromeでのみ、文字がdivに出現します
textareaではそうはならないので、
contenteditableのフォーカスアウト時の処理が甘いのだと思われます
698Name_Not_Found:2014/04/23(水) 15:07:12.27 ID:???
バグはいつか解消するものなので
コードをバグに最適化するといつか非最適になってしまう
かといってバグがいつ解消するかは分からない
という問題がありますね
699Name_Not_Found:2014/04/23(水) 15:18:45.77 ID:???
バグを見つけてうれしくてうれしくて仕方ないって感じがよく伝わってくるよ
700Name_Not_Found:2014/04/23(水) 15:24:04.50 ID:???
>>697
入力フィールドが複数ある場合でも?

キー入力と同時にそのフィールドに自動的にフォーカスされるような
「配慮」が実装されている可能性も考えられる
701Name_Not_Found:2014/04/23(水) 15:27:02.07 ID:???
>>699
無能な人ってそう思うんですね
こっちは遊びで作ってるんじゃないんです
そんなことで嬉しいわけないでしょう
702Name_Not_Found:2014/04/23(水) 15:30:16.09 ID:???
>>700
IME入力が中途半端な状態でキー入力が続けられるので配慮ではなくバグかと
703Name_Not_Found:2014/04/23(水) 15:45:33.92 ID:???
http://jsbin.com/zoxecica/2/edit

textareaも足しました
textareaの場合はキーが入力フィールドに戻ることはありません
あとIMEオフでも現象は再現するようです
IMEオンの時にイベントにやってくるキーコード自体が変わってしまい問題が生じたので、
IMEが関係すると思っていましたが、バグの本質はIMEにはないようです
704Name_Not_Found:2014/04/23(水) 18:56:28.02 ID:???
直せばいいじゃん
705Name_Not_Found:2014/04/23(水) 19:49:20.65 ID:???
>>696
> あるいは関係者の方が見ていたらこのバグの修正をお願いします
2chに書いて修正される可能性は低いと思われます
自分で報告しましょう
https://support.google.com/chrome/answer/95315?hl=ja
706Name_Not_Found:2014/04/23(水) 20:00:28.30 ID:???
>>696-697,703
連投するなら名前にレス番を入れる配慮をお願いします。
このままでは他の質問と見分けがつきにくい上に、他の人が質問しづらくなります。
707Name_Not_Found:2014/04/23(水) 20:06:29.08 ID:???
どいつもこいつもなぜ問題を切り分けて考えないんだ?
頭が悪いなほんとに
708Name_Not_Found:2014/04/23(水) 20:21:13.35 ID:???
>>698
> バグはいつか解消するものなので
認識されないバグは永遠に解消されません
バグだと思うのなら切り分けして開発者に報告するのが常道です

>>703
bootstrap.js のバグである可能性もあるのでは?
通常は「現象が再現される最小限のコード」で切り分けします
もっと短いコードになるまで切り分けしてそれでもバグだと判断できるなら報告してください
709Name_Not_Found:2014/04/23(水) 21:37:33.54 ID:???
>>701
それにしてはなかなか完成しないみたいだね。
納期大丈夫?
710Name_Not_Found:2014/04/23(水) 22:39:52.60 ID:???
>>708
firefoxやieでは起きず、
chromeでも通常のフォーム部品では起きないので
論理的に考えてバグだと思いますが。
むろん何らかの回避の方法はあるかもしれません。
しかしバグはバグです。
711Name_Not_Found:2014/04/23(水) 22:44:58.47 ID:???
バグを直して欲しいというのが目的なら、こんなとこで愚痴ってないで正規のルートで報告しろって言ってるんだよカスが
712Name_Not_Found:2014/04/23(水) 22:48:29.70 ID:???
いいえ、情報を共有することが目的です
バグが修正されれはそれでいいというわけではないのです
713Name_Not_Found:2014/04/23(水) 23:26:47.69 ID:???
いつまでも修正されないバグをここに報告されても困るわけだが
714Name_Not_Found:2014/04/24(木) 01:39:16.35 ID:???
そのバグから何を学べるかを考えて下さい
そうすればバグの価値は何倍にもなるのです
誰にも知られず知られないまま修正されるバグはこのような価値を持ち得ません
715Name_Not_Found:2014/04/24(木) 01:40:51.30 ID:???
おまえの行動自体に価値がない
716Name_Not_Found:2014/04/24(木) 01:44:11.56 ID:???
ただ自己顕示欲が強いだけじゃんw
くだらねえな
717Name_Not_Found:2014/04/24(木) 01:57:23.82 ID:???
ハンターハンターの連載再開するんだし、全てはどうでもいいことよ
718Name_Not_Found:2014/04/24(木) 01:59:22.86 ID:???
>>714
> 誰にも知られず知られないまま修正されるバグはこのような価値を持ち得ません
「誰にも知られず知られないまま修正されるバグ」など有り得ない
「報告されないバグは永遠に修正されない」と何度も指摘されているわけだが、頭に入っていないようだ
719Name_Not_Found:2014/04/24(木) 04:39:19.83 ID:???
まーた極論か
こういう極論アスペが何かを前進させることはありえないよね
720Name_Not_Found:2014/04/24(木) 04:40:39.59 ID:???
極論アスペより極論系アスペの方が語呂がいいな
極論系アスペは恥を知れ
721Name_Not_Found:2014/04/24(木) 05:28:50.52 ID:???
アスペっていうやつがアスペ
722Name_Not_Found:2014/04/24(木) 06:16:05.37 ID:???
極論系アスペは「何年何月何日何時何分何秒地球が何回回った日?」って言うクソガキみたいなもの
何も付け加えてない
自分がただ言いたいだけ
723Name_Not_Found:2014/04/24(木) 06:44:30.47 ID:???
というやつがアスペ
724Name_Not_Found:2014/04/24(木) 08:25:47.52 ID:???
アスペか否かは問題の本質じゃないよ
最近、他人を蔑む為の発言を繰り返す人が増えているけど、非生産的なのでスルーするか、質問に答えるorアドバイスする程度に留めるべきだと思う
変な輩が増えてるので気持ちはわかるけど、相手に合わせて自分の品位を下げてもいいことは何もない
725Name_Not_Found:2014/04/24(木) 10:03:17.18 ID:???
正論って人の心を動かさないってのがよくわかるレスだな
2chで正論吐いても自分に酔ってるようにしか見えないもんなw
726Name_Not_Found:2014/04/24(木) 13:55:30.73 ID:???
極論でも正論でも嘲笑するんだな、この上から目線は
727Name_Not_Found:2014/04/24(木) 14:42:11.51 ID:???
いや別人だけど
728Name_Not_Found:2014/04/24(木) 18:39:36.96 ID:???
>>717
まじでか
何があったんだよ…FF14がそんなにつまらなかったのか…
729Name_Not_Found:2014/04/24(木) 23:02:50.08 ID:???
ネットでJavaScriptを調べてみたので、教えてください

1. クラスを書くときは普通、prototypeを使う
prototypeを使わない書き方もあるようですが、普通prototypeを使うのがベターなんですよね

2. 業務アプリケーションを作るときに、クラスを使う必要があるのか疑問
javaとかでは継承使うけど、jsでは継承使うシチュエーションあるのかな
730Name_Not_Found:2014/04/24(木) 23:54:52.20 ID:???
擬似的にクラスベースのOOを実現するのが扱いやすいのでは。
俺はそうしてます
731Name_Not_Found:2014/04/25(金) 01:29:42.78 ID:???
>>729
ECMAScript 5 では、new ではなく、
Object.create(クラス名).init(初期値) で、
インスタンスを作る方法ができた

newでは、インスタンスを作ってから、メソッドやプロパティを、
その各インスタンスに追加するが、
createでは、メソッドはクラスに1つしかなく、
各インスタンスにメソッドを追加しないので、
メソッド数が多い場合には、メモリが少なくて済む

ただし、createは、Functionオブジェクトではなく、
Objectを使うため、コンストラクタを使わないので、
instanceofが使えない

JSはあまりに変態な言語であるので、
本格的な開発をするなら、この本を推奨

はじめてのJavaScript、秀和システム
掌田津耶乃(しょうだ つやの)、2013
732Name_Not_Found:2014/04/25(金) 02:10:37.78 ID:???
>>729
メソッドの共有が簡単なので
クラス継承が必要になるケースはあまり多くないと思う
733Name_Not_Found:2014/04/25(金) 03:09:59.02 ID:???
>>731
> newでは、インスタンスを作ってから、メソッドやプロパティを、
> その各インスタンスに追加するが、
それはprototype使わない場合だろ
prototype使わないならわざわざnew使う意味ないし
734Name_Not_Found:2014/04/25(金) 03:25:22.41 ID:???
話が噛み合ってない感
735Name_Not_Found:2014/04/25(金) 03:42:03.29 ID:???
>>731
レビューないけど買ってええんか
736Name_Not_Found:2014/04/25(金) 07:20:35.90 ID:???
>>733
横からだが、Object.create は [[Prototype]] を使ってる
http://es5.github.io/#x15.2.3.5
737Name_Not_Found:2014/04/25(金) 11:59:47.56 ID:???
なんか書名がそんなにコアな感じじゃないな
本当にオライリー本よりええの?
738Name_Not_Found:2014/04/25(金) 12:21:04.77 ID:???
良いという評判がない限り、
どうでもいいものだと考えておきましょう。
739Name_Not_Found:2014/04/25(金) 12:23:19.23 ID:???
高いもんじゃないしとりあえず買ってみるわ
740Name_Not_Found:2014/04/25(金) 12:26:27.54 ID:???
ステマくさいww
741Name_Not_Found:2014/04/25(金) 12:26:58.61 ID:???
立ち読みで十分なレベルだな。
742Name_Not_Found:2014/04/25(金) 12:35:49.33 ID:???
元質問にかえると、業務アプリっていうのがどういうものか分からないけど
インスタンスを沢山作りたいならクラスにすればいいだけでは
743Name_Not_Found:2014/04/25(金) 13:36:40.15 ID:???
コードあるじゃん。レビューできるなw
http://www.shuwasystem.co.jp/products/7980html/3813.html

ダメなコード例、注意点として書いてあるだけかもしれないけど見ててもやっとした点。

全体的に、カンマ、forのセミコロンの後にスペースがない。時々ある(統一されてない)
関数は基本的にグローバル空間に定義(無名関数ほぼ無し)
クラスの作り方が入門書にしては詳しいが、Javaっぽくて、JavaScript風ではない。
=== が使われていない。

・chap2.txt
  いきなりconst。まあこれ以降使ってないみたいだから単なる説明か。
・chap4.txt
  配列に for in 使ってる。
・chap5.txt
  非標準のconstructor.nameがでてきてる。
・chap7.txt
  <body onload="init()"> とか書いてある。
  以前の章にsortとかmapとか出てきてるのに、関数の引数に無名関数を直接渡すのがaddEventLisnerだけ。
・chap9.txt
  いきなりハンガリアン使い出したと思ったら、docCookiesはこれかhttps://developer.mozilla.org/ja/docs/DOM/document.cookie
  PHPでてきてんだけど、なんで最終行でflush()わざわざ実行してんの?
  いきなりInt8Array使ってんだけど?
・chap10.txt
  jQuery使ってるのはこれだけ(入門書ならまあいいが)
  jQueryの処理の開始で普通に使う$(function() {})ではなく、$(window).load(function() {} )を使っている。
  $("#msg").each(・・・)使うのが普通の所で、わざわざ$.each($("$msg"), ・・・)を使ってる。

感心できる点・・・無し
典型的な入門書。たぶんMDCみながら初心者向けっぽいのをピックアップしただけで筋道立てて教えていない。
ぐぐってサンプル見つけてまとめただけ。最新、または常識的なやり方を知らず作者の実経験レベルは低い。
というのが俺の印象。本気で勉強したいときに見る本ではなく良書にはなりえない。
744Name_Not_Found:2014/04/25(金) 13:55:13.43 ID:???
じゃあなんで褒めたんですかぁ?
745Name_Not_Found:2014/04/25(金) 14:00:10.76 ID:???
>>744
褒めた人に聞かないとわからんよ。
褒めた人が、適切な理由を言えるかどうかにかかっているw

まあ、初心者には良書かどうかは判断できない。
間違っている内容が間違っているとわからないのが初心者だから。
746Name_Not_Found:2014/04/25(金) 14:01:33.48 ID:???
訂正しておく

×典型的な入門書。
○典型的なダメな入門書。
747Name_Not_Found:2014/04/25(金) 19:49:22.35 ID:???
この人の他の本も見たけどあまり評判がいいとは言えないね
748Name_Not_Found:2014/04/25(金) 21:11:40.56 ID:???
紹介した人はどのへんが良かったのか擁護する義務があると思うんだが
749Name_Not_Found:2014/04/25(金) 23:52:51.31 ID:???
グローバル変数の寿命についてなのですが、
ページが更新されるとクリアされるってことで間違えてないですか?

少なくとも、chromeではそういうふうに動きました
750Name_Not_Found:2014/04/25(金) 23:55:36.74 ID:???
javascriptにクラスの概念がないが、こういうふうに
クラス概念があって、どうたらこうたらって記事がわりネット上にあるが
こういうのって余計混乱するんだよな
皆さん、どう思われますか?
http://qiita.com/norami_dream/items/ea3827f05699afcb1cc5
751731:2014/04/26(土) 02:50:26.11 ID:???
はじめてのJavaScript、秀和システム
掌田津耶乃(しょうだ つやの)、2013

スペースが多く、レイアウトも良く、
図が多くてわかりやすい・読みやすい

100ページに及ぶ、オブジェクト指向の説明は圧巻(4, 5章)
JSがいかに変態な言語であるか、
10言語ほど知っている漏れでも、何回も読み直すほど難しい

こういう抽象的で難解な話を、図もなく、
オライリーなどで外人から学ぶのはムリ
(まずオライリーというだけで、漏れは読む気にならない)

他に、DOMのイベントについても、100ページの説明がある(7, 8章)
ただし誤植が多いので、サイトの書籍の訂正を見た方がよい
例えば、for-in は、インデックス順に取り出すとあるが、
MDNでは、順不同となっている。どっちが正しいの?
752Name_Not_Found:2014/04/26(土) 03:14:06.31 ID:???
要約

レイアウトとかどうでもいい。
オブジェクト指向は何回も読み直さないと
いけないほどわかりにくい説明。
基本的に良書であるオライリーが読めない人間の言うこと。
誤植が多く、基本的なことも間違ってる。
753Name_Not_Found:2014/04/26(土) 03:16:38.91 ID:???
漏れとか言っちゃうイタい奴だったか
3000円無駄にしたわ
754Name_Not_Found:2014/04/26(土) 03:45:00.96 ID:???
m9(^Д^)プギャー
755Name_Not_Found:2014/04/26(土) 04:08:16.85 ID:???
クラスがないんじゃなくて
prototypeとコンストラクタ関数に分かれていて分かりにくいだけ
756731:2014/04/26(土) 04:22:51.16 ID:???
100ページに及ぶ、オブジェクト指向の説明は圧巻だよ
JSがクソなの。構造体もなくて、あきれてしまう
著者はよく説明している

それに漏れは、供給者側からの評価はしない
あくまでもユーザ目線
自分の力が、短時間で向上したかどうか、
自分が影響を受けたかどうか、つまり自分の結果を重視する

オライリーが何を言おうと、自分には影響しない
もっと短時間で、わかりやすく説明できる人に、お金を払う
自分を向上させた人に、お金を払う
757Name_Not_Found:2014/04/26(土) 04:25:33.64 ID:???
使い方は分かってるんだが、
変さの必然性は今でもいまいちわかってないな
だから、使えるけど、あれ本当に分かってたっけ?って不安になる
758Name_Not_Found:2014/04/26(土) 04:32:55.84 ID:???
他のオブジェクト指向言語は、
クラスを生成する仕組みが既に出来上がっていて、そこに手を入れることは出来ないけど
JSは、クラスを生成する仕組みを更に分解できる。
そこが原始的だし、自由度が高いともいえる。
759Name_Not_Found:2014/04/26(土) 04:45:13.54 ID:???
コンストラクタがなくても、こんな感じで継承はさせられるのか
変な言語だなぁ

var parent = {
parent: function(){
console.log('parent');
}
}

var granpa = {
granpa: function(){
console.log('granpa');
}
}

parent.__proto__ = granpa;

parent.granpa();
760Name_Not_Found:2014/04/26(土) 06:48:17.34 ID:???
__proto__は何故非推奨なのか?これを非推奨にしてクラスっぽいものを導入する意味がわからん
761Name_Not_Found:2014/04/26(土) 07:36:34.86 ID:???
>>760
__proto__ は ECMAScript 5 で定められてないから
標準化されてない以上、全ての実装で同じ挙動になることを保証できず、実装されている保証もない
762Name_Not_Found:2014/04/26(土) 07:39:06.84 ID:???
>>749
その認識で正しい
763Name_Not_Found:2014/04/26(土) 07:43:19.35 ID:???
>>750
ECMAScriptはクラスベースではなく、プロトタイプベースだからその手の記事は信用しない
ECMAScript仕様と見比べて仕様にない説明をしている部分は信用しないことにしている
764Name_Not_Found:2014/04/26(土) 09:18:49.09 ID:???
糖衣構文と思えば
765Name_Not_Found:2014/04/26(土) 10:36:02.71 ID:???
型(クラス)とインスタンスがあるんだから
クラスがないとは言えない。
すべてのオブジェクトの生成を
プロトタイプチェーンの伸長だけで済ませるのなら、
クラスはないと言えるけど。
変な言語なんだよJSってやつは
766Name_Not_Found:2014/04/26(土) 10:51:49.86 ID:???
俺の考える真のプロトタイプベース
1 型をなくす。オブジェクトはオブジェクト、以上
2 オブジェクトはオブジェクトから作られる
3 オブジェクトの生成時にコンストラクタを渡せる。しかしそれは型ではない
4 プロトタイプチェーンに連なるオブジェクトがそのオブジェクトの性質をあらわす
767Name_Not_Found:2014/04/26(土) 11:05:08.44 ID:???
>>765
goodパーツには「Javascriptにおけるオブジェクトはクラスの概念を持たない」
って明記されているのだけど?
間違ってるってこと?
768Name_Not_Found:2014/04/26(土) 11:08:13.24 ID:???
グッドパーツっておもしろおじさんのおもしろテクニック集みたいなもんだから。
769Name_Not_Found:2014/04/26(土) 12:06:02.50 ID:???
コーヒースクリプトみたいなメタ言語はまだ流行ってるんかな
770Name_Not_Found:2014/04/26(土) 12:51:35.26 ID:???
>>756
とありあえず、

はじめてのJavaScript、秀和システム
掌田津耶乃(しょうだ つやの)、2013

は買う価値の無い本だって
お前のおかげでよくわかったよw
771Name_Not_Found:2014/04/26(土) 13:00:31.28 ID:???
俺の中で一番評価の高い技術系出版社オーム社の本が本屋で全然見なくなった。今でも出版してる?
あの事件のせいだろうな。
772Name_Not_Found:2014/04/26(土) 13:25:40.94 ID:???
どの事件?
773Name_Not_Found:2014/04/26(土) 14:54:50.36 ID:???
あぁオウムのサリン事件か
すまそ
774Name_Not_Found:2014/04/26(土) 15:27:12.69 ID:???
>>751
for-inは順不同で列挙が正しい(ESで未定義)
誤った知識をわかりやすく説明しているなら、それは良書とはいえない
せっかく覚えても正しい知識を覚え直さないといけなくなる
少なくとも、それが正しいか判断できない初心者にその書籍を勧めるべきじゃない
775Name_Not_Found:2014/04/26(土) 15:34:22.03 ID:???
>>767
ECMAScript 5 で出てくるクラスは [[Class]] だけ
概念としてのクラスは説明されてないから間違ってはいない
既存の概念にとらわれずに仕様書だけを読めば基本的に間違いはないはず
「JavaScriptが変態だ」と認識している人は、既存の概念にとらわれすぎだと思う
776Name_Not_Found:2014/04/26(土) 16:41:02.62 ID:???
「秀和システム」の時点で買わないな。オレの中でもオーム社が一押し。
777Name_Not_Found:2014/04/26(土) 19:03:02.59 ID:???
〜に書いてない、って言ってる人の方が思考停止してるように見えるけどな
考察の結果じゃなくて資料の字面を見た結果でしかない
778Name_Not_Found:2014/04/26(土) 19:05:04.14 ID:???
掌田津耶乃 覚えた

買ってはいけない本を書いている
三流プログラマ
779Name_Not_Found:2014/04/26(土) 19:34:43.35 ID:???
たしかに秀和システムにはいい印象ない
オーム社とソフトバンクパブリッシングが二強
780Name_Not_Found:2014/04/26(土) 19:40:48.12 ID:???
ソフトバンクパブリッシングはないだろwwwwwwwwwww
781Name_Not_Found:2014/04/26(土) 19:50:32.66 ID:???
D級プログラマー乙
デザパタ本とか硬派な本を出してるから
782Name_Not_Found:2014/04/26(土) 19:51:49.33 ID:???
ハンターハンターの連載再開するんだからちょっとは落ち着こうよ
783Name_Not_Found:2014/04/26(土) 20:54:15.09 ID:???
>>777
では、仕様の文面と照らし合わせながら考察したら?
無根拠に変態言語と主張されてるから「仕様を読め」といわれるんでしょ
784Name_Not_Found:2014/04/26(土) 21:01:33.76 ID:???
バカばっかですね
785Name_Not_Found:2014/04/26(土) 21:02:38.77 ID:???
仕様書に言葉として書かれていないものは存在しないと主張するJSパリサイ派の方が
トートロジー以外の方法でクラスが存在しないことを説明するべきだろう
786Name_Not_Found:2014/04/26(土) 21:06:53.80 ID:???
「あるオブジェクトを生成するための、プロトタイプとコンストラクタの組み合わせ」は
プログラミング言語設計上のクラスと言っても差し支えない、
とJSジーザスの俺は主張しているのだが?
悔い改めよ。
787Name_Not_Found:2014/04/26(土) 21:11:59.17 ID:???
すみません空気読まずに質問です

チャットルームを作ってるんですが
> < " ' をサーバーでエスケープしないで
jsonとしてサーバーから送られてきたものをJavascriptでエスケープしようと思ってるんですがこれってクライアント側からしたら危険だったりします?
788Name_Not_Found:2014/04/26(土) 21:14:57.21 ID:???
質問スレで空気など読む必要は一切ありません
789Name_Not_Found:2014/04/26(土) 21:17:53.94 ID:???
js側でエスケープするなら全然危険じゃないよ
jsでエスケープとかごく普通のことだし
790Name_Not_Found:2014/04/26(土) 21:39:02.49 ID:???
function Index() {
$('[id="htmlForm:button1"]').click(this.say);
this.count = "aa";
}

Index.prototype.say = function () {
alert(this.count); ← なんでボタンをクリックした時に、undefineになるんですか?
};
791Name_Not_Found:2014/04/26(土) 21:50:34.24 ID:???
オブジェクトはオブジェクトから作られる、っていうプロトタイプベースの基本思想を
もっと美しく実現していたら良かったのにな
思想と実装の間の不調和が「変」だと感じる理由だと思う
792Name_Not_Found:2014/04/26(土) 21:52:55.34 ID:???
プロトタイプベースにとって、プロトタイプチェーンってのは最重要の概念なのに
なんで裏に隠れているのか。
もっと明示的に、プログラマにとって分かりやすくすべきだろう。
793787:2014/04/26(土) 22:05:39.07 ID:???
>>788>>789
ありがとうございます!こうやって背中一押ししてもらえると安心できます
794Name_Not_Found:2014/04/26(土) 22:52:56.75 ID:???
>>784
ようこそ友よ。
795Name_Not_Found:2014/04/26(土) 23:01:48.03 ID:???
>>785
仕様書に書かれてない内容は主観でしかないでしょ
違うというなら根拠を示すべき
>>786も主観を書き連ねただけで根拠がまるでないよね
796Name_Not_Found:2014/04/26(土) 23:09:30.92 ID:???
主観てw
典型的な自分で考えることのできない奴の反論じゃねーか
一つも技術的な内容がないし、論争すら無駄な相手
くだらね
797Name_Not_Found:2014/04/26(土) 23:31:54.88 ID:???
JavaScriptを変じゃないって言ってる奴は単にJavaScriptしか知らないだけだろ
798Name_Not_Found:2014/04/27(日) 02:07:31.48 ID:???
クラスはプリミティブな機能としてあった方がいいんだよな
ないせいで各自自前でクラス生成みたいなことしてるんだから
799Name_Not_Found:2014/04/27(日) 02:58:12.16 ID:???
lodashに_.isNullというものがありますが
これって必要ですか?
===null
でいいのでは?
800Name_Not_Found:2014/04/27(日) 02:58:17.70 ID:???
>>790
thisは、そのオブジェクトを指す
関数もオブジェクトなので、関数が異なると、thisも異なる

function A(){
this.a
var c
var self = this

function B(){
this.b
self.a
}}

関数Aの中に、Bがある時、2つのthisは、別個の関数を指す
変数cは、内側のBでも使えるので、
Aのthisを変数に代入して、Bで使える
801Name_Not_Found:2014/04/27(日) 04:21:54.40 ID:???
なんだそのめちゃくちゃな説明
802Name_Not_Found:2014/04/27(日) 04:38:42.37 ID:???
thisが関数を指すことなんてないよな
803Name_Not_Found:2014/04/27(日) 04:42:07.78 ID:???
関数とコンストラクタをゴッチャにしているJavaScriptが悪い
804Name_Not_Found:2014/04/27(日) 04:48:54.00 ID:???
コンストラクタも関数なんだから
その理屈はおかしい
805Name_Not_Found:2014/04/27(日) 05:10:40.80 ID:???
変数Aに、変数Bの名前が入っています
変数Aを使って、その空間で変数Bを参照した時と同じ結果を得るにはどうしたらいいでしょうか
806800:2014/04/27(日) 07:42:39.40 ID:???
Object <- Function <- constructor

関数やインスタンスは、
Functionオブジェクトで良いんだろ?
807Name_Not_Found:2014/04/27(日) 09:40:13.40 ID:???
>>806
> 関数やインスタンスは、Functionオブジェクトで良いんだろ?
Functionオブジェクトが何を指しているのか今一不明だが、少なくとも [[Call] を持つオブジェクトじゃない

function A () {
console.log(A !== this); // true
}

console.log(typeof new A); // object
808Name_Not_Found:2014/04/27(日) 09:44:50.34 ID:???
>>805
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/eval#Don.27t_use_eval.21
Strict Mode で使用できないし、基本的にそのような使い方は推奨されない
809790:2014/04/27(日) 12:59:39.12 ID:???
> thisは、そのオブジェクトを指す
> 関数もオブジェクトなので、関数が異なると、thisも異なる

つまり、thisで参照するためには>>790の書き方ではダメってことですか?
たかだかthisで参照するだけなのに、制限があるってめんどいですねー
810Name_Not_Found:2014/04/27(日) 13:22:05.42 ID:???
this.say.bind(this)
811790:2014/04/27(日) 13:51:07.57 ID:???
>>810

おかげ様で動きました。
bind(this)を書き忘れて、バグ作りそうですね
812Name_Not_Found:2014/04/27(日) 14:03:58.02 ID:???
>>811
だって普通そんな書き方しないしw
普通は無名関数を使う。

とりあえず、あんたが参考にしている
本とかあったら、その本は捨てるといいよ。
813Name_Not_Found:2014/04/27(日) 14:22:03.31 ID:???
>>812
> 普通は無名関数を使う。
その理屈はおかしい
登録されているListenerを解除することを考えたらハンドラ登録には名前付き関数を使う
jQueryは関数指定なしでもイベントハンドラ削除できる機構が用意されているが、それでも特定のハンドラのみを解除することを考えたら名前付き関数を使用するしかない
removeEventListener を使い慣れている人なら名前付き関数を使用するかもしれないし、その書き方が望ましいケースは確かにある
Function.prototype.bind は>>790のようなケースで利用されるものだと思う

そもそも、無名関数の多量生産は無駄にクロージャを作るという意味では良い設計とは言えない
jQueryは無名関数を多用する書き方が好まれる傾向にあるが、あの書き方ではデメリットもあることを覚えておいた方がいい
814790:2014/04/27(日) 14:22:33.13 ID:???
>>812
普段は.NET + AS3で開発しているので、jsを触ることはないんでよくわからないんですが

jsではクラス使わないほうがいいんですかね?
会社で他の人が作っているERPみたら、クラス使っていなかったんです
815813:2014/04/27(日) 14:51:08.43 ID:huBJdt32
>>814
new演算子を利用した書き方が広く知られていないだけで使用してはいけない必然性はないと思う
jQueryでは公式にサポートしていない(attachEventを利用していた名残だろう)が、addEventListener ではthis値の束縛として handleEvent が用意されている
>>790の場合は Index.prototype.say を Index.prototype.handleEvent で定義してやれば、大分楽になる
http://javascripter.hatenablog.com/entry/20090406/1239034512

this値は呼び出し元に依存するが、それは Function.prototype.call でthis値を変更することで既存メソッドを流用できるメリットもある
良く知られているのは Array.prototype.forEach.call を利用してノードリストで配列用メソッドを利用する手法
しっかりと理解すれば便利な機構なので積極的に試してみるといいと思う
816Name_Not_Found:2014/04/27(日) 15:04:38.96 ID:???
>>813
> 登録されているListenerを解除することを考えたらハンドラ登録には名前付き関数を使う

そんなの解除するときだけ考えればいいことでしょ?

通常イベントハンドラを削除したい時は要素を削除する時で、
jQueryで要素を削除すれば、それに関連したイベントハンドも一緒に解除されて
メモリリークも起きないのだからそこは気にする必要がない。

要素は存在するのにイベントだけを削除することはほとんどない。
一時的に無効にしたい場合でも、classで状態を変化させて、セレクタで切り分ける
817Name_Not_Found:2014/04/27(日) 15:14:30.59 ID:???
>>808
evalを使わないと出来ないのですね
ありがとうございました
818808:2014/04/27(日) 15:24:07.68 ID:???
>>817
今思い至ったのだが、プロパティ名なら変数を利用できる
変数名として使いたいのなら無理だが、改修できるようならオブジェクト化を検討してもいいかもしれない
819813:2014/04/27(日) 15:40:21.49 ID:huBJdt32
>>816
> そんなの解除するときだけ考えればいいことでしょ?
全体コードが不明なのに>>812の時点で解除しないとなぜ言い切れる?
この時点で「普通は無名関数を使う」とか「質問者が参考にしている本を捨てるといい」とまで言い切れる理由があるならちゃんと説明して欲しい

> メモリリークも起きないのだからそこは気にする必要がない。
メモリリークの話はしてない
クロージャの多量生産は束縛される変数の数だけメモリを消費するが、それは仕様であってメモリリークではない
820Name_Not_Found:2014/04/27(日) 15:53:46.05 ID:???
>>819
> 全体コードが不明なのに>>812の時点で解除しないとなぜ言い切れる?

基本的な考えとして、

今必要ないなら作らない。
必要になった時に作る

という考えにした方がいいよ。

忠告ね。
821Name_Not_Found:2014/04/27(日) 15:59:43.90 ID:???
YAGNIって考え方だね。

プログラムってのは将来どう成長するか不明なものだから、
不明だから解除する場合のことまで考えておくという発想だと
すべて解除可能にしなきゃいけない。

その考えていけば拡張可能にしなきゃいけないとか
言い出しそうだし、prototype使う必要がない場面でも
不明だから、とりあえず使うとかいうことになりかねない。

拡張可能にすることで、コードが膨れないのならいいけど、
この場合は明らかに現在必要がないコードを書くことになってる。

こうやって必要のない無駄なコードをどんどん書くことになる。
これはYAGNIの原則に反する。
822813:2014/04/27(日) 16:13:26.28 ID:huBJdt32
>>820
その返答では「無名関数を使用しなければならない必然性」を説明できてないと思うが…
「無名関数を使用する方法もあるよ」ならここまで引っ張らなかった
823Name_Not_Found:2014/04/27(日) 16:18:23.26 ID:???
無名関数を利用する事と>>790の問題がどう関係しているのかわからない
「new Index() な書き方は避けて全部無名関数を使用すればいいよ」って主張してるの?
824Name_Not_Found:2014/04/27(日) 16:22:08.34 ID:???
>>823
主張はレスの内容を見ようね。

> bind(this)を書き忘れて、バグ作りそうですね
>
>
> 812 名前:Name_Not_Found[sage] 投稿日:2014/04/27(日) 14:03:58.02 ID:???
> >>811
> だって普通そんな書き方しないしw
> 普通は無名関数を使う。
825Name_Not_Found:2014/04/27(日) 16:25:16.82 ID:???
というか、

var Index = function () {};

これで全て無名関数になるんだが…
もう少し、クリティカルな話をして欲しい
826Name_Not_Found:2014/04/27(日) 17:13:55.85 ID:???
>>824
無名関数を使用する事でどうやってthis値を束縛するの?
具体的なコードを示して欲しい

無名関数内で Function.prototype.call を使う解決方法もあるけど、Function.prototype.call が解決法だし、Function.prototype.bind を否定する要素がない
827Name_Not_Found:2014/04/27(日) 17:52:28.11 ID:???
>>825
無名関数に名前付けた場合それは無名関数なのか
828Name_Not_Found:2014/04/27(日) 18:24:18.12 ID:???
名前付けてなくね
829Name_Not_Found:2014/04/27(日) 18:43:23.54 ID:???
>>827
変数に格納しただけで無名関数
そもそも、無名関数を名前付き関数に変更する方法はないと思うんだが(あるなら教えて欲しい)
非標準の Function.prototype.name も読み取り専用だし
830Name_Not_Found:2014/04/27(日) 19:31:34.11 ID:???
var a = {
b: 1
};
var c = a.b;
のとき
delete(c);
としても、a.bは削除されません
delete(a.b);
とすると削除されます
delete関数の引数が普通の関数と異なり「必ず参照渡し」になっているということだと思いますが
プログラマーが明示的にこういう関数を作ることは出来ないのでしょうか?
831Name_Not_Found:2014/04/27(日) 19:35:23.00 ID:???
jsのthisの仕様どうにかして欲しいですね
他の言語を使ってきた人が、間違えてしまう

jsは柔軟性がある言語だと主張している人がいますが、
書き方が自由なだけであって柔軟性があるとはまた違う気がする

柔軟性 == それなりの規模のアプリケーションを作れる
832Name_Not_Found:2014/04/27(日) 19:36:51.55 ID:???
>>827
いちおう名前を付けることはできるけどな

var f1 = function f2(){
alert(f1.name);
}

f1(); // "f2"
f2(); // エラー(名前を付けたからと言って呼び出せるわけではない)
833Name_Not_Found:2014/04/27(日) 19:38:59.24 ID:???
>>830
delete演算子は関数じゃない
delete演算子はプロパティ削除であって変数を削除できない
834Name_Not_Found:2014/04/27(日) 19:40:40.82 ID:???
関数名を後で変更できたら怖い

var hoge = function foo () { console.log(foo.name); }
hoge.name = 'piyo'; // 書き換え可能だったとする(※実際は書き換え不可)
hoge(); // ReferenceError: foo is not defined
835Name_Not_Found:2014/04/27(日) 19:43:14.96 ID:???
>>832
名前付き関数の事例なら>>834のようにすべき
836Name_Not_Found:2014/04/27(日) 19:45:23.97 ID:???
>>833
関数じゃないなら納得です
ありがとうございました
837Name_Not_Found:2014/04/27(日) 19:48:32.19 ID:???
>>832
> f2(); // エラー(名前を付けたからと言って呼び出せるわけではない)
>>835で指摘されてるけど、関数内部からは呼び出せるよ
不変の名前として参照できるので便利
838Name_Not_Found:2014/04/27(日) 19:54:07.65 ID:???
>>837
知らなかった、ありがとう、早速使ってみる
839Name_Not_Found:2014/04/27(日) 20:05:43.28 ID:???
>>832
> f2(); // エラー(名前を付けたからと言って呼び出せるわけではない)
IE8 には f2 で呼び出せるバグがあったんだよね
当時は予期せぬ不具合を生み出しそうで使うのを敬遠してた
http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript-5-support-and-more.aspx
840790:2014/04/27(日) 22:29:47.22 ID:???
今日一日thisを調べてみたのですが、間違えていないか教えてください。

this -> 呼び出し元のオブジェクトがセットされる。javaのthisとは違う

クラスっぽいものを作って、それのメンバ関数をイベントリスナーに登録する際は、
bind/applyとかを使ってthisにセットされるインスタンスを指定してあげなければならない。

あってますか?
841Name_Not_Found:2014/04/27(日) 22:37:43.40 ID:???
あってるよ
842Name_Not_Found:2014/04/27(日) 22:42:40.50 ID:???
メソッドたる関数オブジェクトが、親オブジェクトと密接に結び付いてないから
thisが文脈によってコロコロ変わるんだよな
843790:2014/04/27(日) 22:47:26.10 ID:???
>>841-842
ありがとうございました。
明日は仕事だし、みんなおやすみー
844Name_Not_Found:2014/04/27(日) 23:22:10.50 ID:???
>>816
要するに、行き当たりばったりサイコーって事ですね
845Name_Not_Found:2014/04/28(月) 00:41:21.57 ID:???
aタグが混ざっているhtmlから
aタグを普通の文字列に変換するにはどうしたらいいですか?
jqueryありでお願いします
846Name_Not_Found:2014/04/28(月) 01:13:39.55 ID:???
>>840
bind使わないんだったら

function Index() {
$('[id="htmlForm:button1"]').click((function (that) {
return function () {
that.say();
};
})(this));
this.count = "aa";
}

こんな感じ
まあ面倒だわな
847Name_Not_Found:2014/04/28(月) 01:47:30.34 ID:???
>>846
それなら call を使う方がまだシンプルな気がする
まあ、bind が一番スマートなのは間違いないけどね
848846:2014/04/28(月) 02:05:55.59 ID:???
bindの置き換えで考えると >>846になるけど、
単純に

function Index() {
var that = this;
$('[id="htmlForm:button1"]').click(function () {
that.say();
});
this.count = "aa";
}

でいいか

>>847
callだとどうなるの?
849Name_Not_Found:2014/04/28(月) 02:54:24.74 ID:???
>>830
プロパティを削除する、deleteは遅い、
という記事をよく見るが
850Name_Not_Found:2014/04/28(月) 03:42:58.68 ID:???
>>848
ごめん、良く考えたら call では無理だった
851Name_Not_Found:2014/04/28(月) 03:52:07.18 ID:???
ひょっとして、>>812がいいたかったのは>>846だったのかな
一応、無名関数による解決法ではある
(bindを全否定してまで>>790に薦める書き方には思えないけど…)
852Name_Not_Found:2014/04/28(月) 11:29:54.53 ID:???
このベンチマークでExtJSが圧倒してるのはなんでなの?
http://jsperf.com/mojo-of-dojo-and-jquery/75
853Name_Not_Found:2014/04/28(月) 12:16:27.65 ID:???
extjsって有料なのか
宣伝じゃね
854Name_Not_Found:2014/04/28(月) 12:26:25.58 ID:???
Ext JSはエラーになってるような気がする
だから結果は正しくなさそう
855Name_Not_Found:2014/04/28(月) 12:34:34.92 ID:???
なるほど エラーの可能性が高そうですね
856Name_Not_Found:2014/04/28(月) 18:49:48.94 ID:???
>>845
この件ですが、正規表現でinnerHTMLを置換すればいいだけでした
857Name_Not_Found:2014/04/28(月) 19:32:54.58 ID:???
>>851

function Index() {
var that = this;
$('[id="htmlForm:button1"]')
.click( function () {
that.say();
});
this.count = "aa";
}

Index.prototype.say = function () {
alert(this.count);
};

thatを使う書き方はこう書くのが正しい。
858Name_Not_Found:2014/04/28(月) 20:44:58.74 ID:???
>>857
>>846の方がスコープが狭い分だけいいと思うけどねえ
「こう書くのが正しい」と主張するほどいいとは思えない
せめて、>>846の何が誤りで>>857がどう正しいのかを説明してほしい

ところで、それが>>812のいいたかった事?
859Name_Not_Found:2014/04/28(月) 20:52:18.16 ID:???
アロー関数使えばいいんじゃね
860857:2014/04/28(月) 21:49:52.19 ID:???
>>858
まずオレは812ではない。
>>846は見間違えていた。>>846でも構わない。
ただ「スコープが狭いからいい」とは思わないがここは割とどうでもいい。

bindを使う場合とthatを使う場合では本質的に大きな違いがある。
>>790にbindを教えて終わりにするのは「バカはbindでも使ってろ」と言っているようなもの。
bindを使うなら次のコードでもいい。

var say = function () {
alert(this.count);
};
function Index() {
$('[id="htmlForm:button1"]').click(
say.bind(this)
);
this.count = "aa";
}

これより、thatを使った方がオブジェクト指向的には正しいということは理解できるだろう。
861857:2014/04/28(月) 21:55:25.04 ID:???
「オブジェクト指向的には正しい」は違うな。>>846,857にしてもまだこんな書き方はしないと思う。
862Name_Not_Found:2014/04/28(月) 21:58:47.63 ID:???
俺はオブジェクトをビルドする処理を書いて
メソッドの関数名を特定の名前にしておくと、
親オブジェクトをプロパティーとして持たせるようにしてる
こうするとハンドラの中から本来の親オブジェクトに簡単にアクセスできるので
bindとかする必要がなく便利である
863Name_Not_Found:2014/04/28(月) 22:05:35.51 ID:???
以前は子オブジェクトが親オブジェクトを分からないなんてアホすぎるだろと憤怒してたけど
JSの仕組み上メソッドは誰の子にでもなれるわけだし、
実際に複数のオブジェクトに所有されてるかもしれないから、仕方ないんだよな
864Name_Not_Found:2014/04/28(月) 22:15:58.52 ID:???
こういうことね?

var a = {
foo: function () {
return this.val;
},
val: 'a'
};
var b = {
val: 'b'
};
b.foo = a.foo;
console.log(b.foo()); // b

Javaとか知ってると aが表示されんじゃないのって思ってしまうかもね
865Name_Not_Found:2014/04/29(火) 12:40:53.00 ID:???
>>860
これで全体を適当に匿名関数でラップしてやればsayがプライベート関数になる
866Name_Not_Found:2014/04/29(火) 17:36:19.58 ID:???
せいっ!!
867Name_Not_Found:2014/04/29(火) 18:17:05.91 ID:???
長渕乙
868Name_Not_Found:2014/04/29(火) 20:15:04.62 ID:???
ttp://takanamito.hateblo.jp/entry/2013/04/12/000357
別のファイルからstart()やend()を呼びたいときは
var utilities = new MYAPP.utilities();
utilities.start();
utilities.end();
ってこのブログで書いてあるのですが、
MYAPP.utilitiesてnewなしで呼べるように定義されていますが、
この別のファイルからstart()メソッドやend()メソッドを呼ぶときに
何故newが必要なのでしょうか?また、別のファイルから呼ぶ状況は
どういったことを指しているのでしょうか?
869Name_Not_Found:2014/04/29(火) 23:43:39.82 ID:???
>>868
せいっ!
870Name_Not_Found:2014/04/29(火) 23:52:55.27 ID:???
>>868
本人に聞くのが確実だと思うのだけど
(他人のコードを本人以外に聞くのは不確実でしかないのに、この手の質問がなくならないのはなぜなのか)
871Name_Not_Found:2014/04/29(火) 23:54:05.09 ID:???
javascriptの正規表現で質問です。無理かもしれないですが
例えば
var hoge ="12345";
を使ってこれらの文字列の間に半角空白を含めた
var str ="1 2 3 4 5"
を検索した時マッチさせたいのですが変数hogeの中身が分からなかった場合どうやって記述すればいいんでしょうか?
var reg="";
for(var i; i<hoge.length; i++){
   reg +=hoge.slice(i,i+1)+' *';
}
var r =new RegExp(reg)
r.exec(str)

とやってもダメでした
872Name_Not_Found:2014/04/30(水) 01:42:43.92 ID:???
>>871
i が初期化されていないのは誤記としてもそれだと
1 *2 *3 *4 *5 * のように最後に * が付いてしまうぞ
hoge.split('').join(' *') とすれば簡単

目的によっては、検索対象の文字列を加工してから検索する方法も使える
str.replace(/ +/g, '').indexOf(hoge);
873Name_Not_Found:2014/04/30(水) 02:43:27.39 ID:???
普通hogeとstrの両方空白を削除して===で比較するだろ
874Name_Not_Found:2014/04/30(水) 05:08:16.53 ID:???
インスタンスを大量に作る場合で
使用率が低いプロパティーを作ると、メモリがもったいない気がします
_hoge
というプロパティーがあり、それがインスタンスのうち1%くらいでしか使われないと、
残り99%は無駄にメモリを専有することになります
使わない時は削除するとか、
prototypeにテーブルのようなものを作って、そこで管理するとか対処法はあるかと思いますが
どうやってますか?
875Name_Not_Found:2014/04/30(水) 11:49:04.34 ID:???
>>874
そのプロパティがどんだけメモリ食ってるか知らんが単なる数字とかだったら気にするだけ無駄
無駄な画像を削除するとかの方が劇的にメモリを節約できる
ただ、デカいプロパティの場合は null で初期化しておいて、適宜 new するのが常套手段
ちなみに null の初期化は必須
undefined のまま放置してるとエラーになったときに未初期化なのかどっかから undefined が
伝搬してきたのか不明になる
876Name_Not_Found:2014/04/30(水) 12:51:45.90 ID:???
>>784
> 使用率が低いプロパティーを作ると、メモリがもったいない気がします

作る時間のほうが時間のほうがはるかにもったいないです。
1バイトのメモリ = 0.000001 円
あなたが1分働いた給料10円
877Name_Not_Found:2014/04/30(水) 13:15:40.51 ID:???
>>874
コンストラクタ後にプロパティを削除するのは最もやってはいけないこと
オブジェクトがhidden classから外れると逆にメモリを食ってしまう
どうしても必要ないプロパティを付けたくないのならサブクラスを作る

因みにnullで初期化したりしてはいけない
型推論を困惑させ、脱最適化が起こる
初期化しないか、するなら代入する型で初期化すること
型というのはDateならDate、smi穴なしArrayならsmi穴なしArrayでないといけない

脱最適化は1回ならいいが、関数やオブジェクト単位で2回、3回と起こると永久的に最適化されなくなる
878Name_Not_Found:2014/04/30(水) 14:53:21.16 ID:???
>>876
作る時間よりもソフトウェアの総使用時間の方がはるかに大きい
はい論破
879Name_Not_Found:2014/04/30(水) 14:56:01.65 ID:???
>>875
プロパティはbooleanです
インスタンス数が万単位になる可能性があるので気になりましたが
確かに画像比べると大したことないかもしれません
ありがとうございました
880Name_Not_Found:2014/04/30(水) 14:58:07.70 ID:???
>>877
コンストラクタ内で初期化すると最適化されると言う記事は見たことがありますが
型まで指定するとは知りませんでした
ありがとうございました
881Name_Not_Found:2014/04/30(水) 15:37:02.66 ID:???
今まで恥ずかしくて質問できなかったんですがリファレンスサイトにある
文字列.slice(開始位置 [,終了位置] )
の[]ってどういう意味があるんですか?
882Name_Not_Found:2014/04/30(水) 15:41:07.23 ID:???
省略もできるという意味
883881:2014/04/30(水) 15:43:52.47 ID:???
省略できるという意味だったんですか。ありがとうございます
しかしそれだったら
slice(開始位置 , [終了位置])になりませんか?
なんでコンマを跨いで 開始位置 [ , 終了位置 ] )になってるんでしょうか?
884Name_Not_Found:2014/04/30(水) 15:45:22.14 ID:???
そのマンコも省略できるって事
885Name_Not_Found:2014/04/30(水) 15:46:29.85 ID:???
終了位置だけを省略してコンマを残した
開始位置,
だとエラーになるから。
省略する時にはコンマも同時に省略しないと駄目だよっていう意味
886Name_Not_Found:2014/04/30(水) 15:47:28.90 ID:???
, [終了位置]って思う意味が分からないw
887881:2014/04/30(水) 15:49:42.66 ID:???
なるほど、カンマだけになったらバグが発生しちゃうのでそこまで考えてくれたんですね
とってもスッキリしました
これからは気持ちよくリファレンスサイト見る事が出来そうです
888Name_Not_Found:2014/04/30(水) 16:10:15.22 ID:???
「バッカス・ナウア記法」とか調べておくと幸せになれるかも。
889Name_Not_Found:2014/04/30(水) 17:09:23.63 ID:???
あるオブジェクトが何のインスタンスか調べたいとします
instanceofは比較対象の型を決めうちで調べますが、
プロトタイプチェーンにより継承しているすべての型を知りたい時は
どうしたらいいでしょうか
890Name_Not_Found:2014/04/30(水) 18:05:55.06 ID:???
コンストラクタの中からprototypeのinitializeメソッドを呼ぶ
initializeでプロパティーの初期化をする
これでも最適化されるのでしょうか?
891Name_Not_Found:2014/04/30(水) 21:47:31.14 ID:Gk4PGhMd
される
そのコンストラクタが常に同じ名前、同じ型、同じ順番で初期化すればいい
条件分岐でinitializeを呼んだり呼ばなかったりするのはダメ
892Name_Not_Found:2014/04/30(水) 22:00:43.00 ID:???
なるほど
順番も見ているのですね
ありがとうございました
893Name_Not_Found:2014/04/30(水) 22:02:43.14 ID:???
業務アプリでよく使われる、「ファンクションバー」はどのように実装するのがベストですか?

ちなみ、自分がやっている業務アプリでは、F1キーをクリックすると
予めスーパクラスで宣言されていたメソッドが呼び出される仕組みになっています。

public override function f1Check():String { return "メッセージ"; /* 文字列をreturnすると、ダイアログに表示される */ }
public override function f1Click():void { /* 表示されたダイアログでYesをクリックされた時だけ、このメソッドが呼び出される */ }
894Name_Not_Found:2014/04/30(水) 22:34:50.63 ID:???
>>877
そんな細かい最適化なんかよりデバッグのしやすさの方が100倍重要
undefindが伝搬して原因不明のバグに悩まされるより確実にnullで初期化する事を徹底すべし
勿論オブジェクト以外は0とかもあり得る
895Name_Not_Found:2014/04/30(水) 22:40:05.51 ID:???
undefindが伝搬してバグるのはチェックが甘いだけでは?
===で判定したらいいじゃん
896Name_Not_Found:2014/04/30(水) 23:18:08.64 ID:???
undefindになる一番の原因は未初期化変数のアクセスと配列の範囲外アクセスだと思う
配列も含めて全ての変数をundefined以外の値で初期化しておけば
途中でundefinedを見掛けた時に確実にどこかがバグってると分かる
初期化せずにundefinedのまま放っておく癖がつくと
undefinedを見掛けてもスルーする癖がついてしまうというだけのこと
897Name_Not_Found:2014/04/30(水) 23:41:27.75 ID:???
>>896
それだと、本来バグとして検出できるものが
検出できなくなるじゃん。

・変数定義するときは必ず代入する(代入したら値はなるべく変更しない)
・配列のアクセスには、forEach系を使う

こうでしょ?
898Name_Not_Found:2014/05/01(木) 00:15:09.90 ID:???
>>897
> それだと、本来バグとして検出できるものが
> 検出できなくなるじゃん。
ん?よくわからん…具体的な例があったら教えてくれ

> ・変数定義するときは必ず代入する(代入したら値はなるべく変更しない)
なるべく変更しないって曖昧な表現だけどまぁundefined以外の値で初期化と同じ事だよ

> ・配列のアクセスには、forEach系を使う
確かにその通りだけど、配列は線形にアクセスするだけじゃなくてランダムアクセスの時に大体やらかす
var a;
if (hoge) a = b[c];
みたいな時aがundefinedの時に何が原因か分かりづらいのを分かりやすくするってだけ
(これは単純だからすぐ分かるけど…)
899Name_Not_Found:2014/05/01(木) 00:21:07.92 ID:???
ちなみに、
var a = -1;
if (hoge) a = b[c]; // bの中身は全てundefined以外
だと、cが範囲外アクセスってのがすぐ分かる (cもundefined以外で初期化しておく)
900Name_Not_Found:2014/05/01(木) 02:17:50.41 ID:???
入力された文字によってテキストエリアのサイズが変わった時に発生するイベントなんてないですよね?
onsizechangeみたいなのがあればいいんですが。
onkeyupやタイマーでサイズ変更を検出するしかないでしょうか?
901Name_Not_Found:2014/05/01(木) 02:43:34.03 ID:???
プロトタイプに持たせるプロパティーとインスタンスに持たせるプロパティーって
使ってる側では判別できないですよね
this._hoge = 'hoge';
と書いても、_hogeがインスタンスのものなのかプロトタイプのものなのかはそれだけだと分からない
プロトタイプのプロパティーは名前を変えたりした方がいいのでしょうか
902Name_Not_Found:2014/05/01(木) 03:05:57.11 ID:???
とりあえずプロトタイププロパティーはプリフィックスを変えました
クロックフォードはこの問題に何も言ってないのでしょうか
903Name_Not_Found:2014/05/01(木) 03:58:28.00 ID:???
>>901
この書き方だとインスタンスプロパティーにしか書けないと分かりました
プロトタイププロパティーは読み込みはthis.hogeで出来ますが
書き込みは出来ないようです
JS奥深し
904Name_Not_Found:2014/05/01(木) 04:05:52.35 ID:???
>>898
横からだが、undefined がNGなのはお互いの認識が一致してる
議論するなら配列をnullで初期化するか、[] で初期化するか、だけ
争点をはっきりさせないと、無駄に時間を使うことになるから注意
905Name_Not_Found:2014/05/01(木) 04:12:10.06 ID:???
インスタンスから、プロトタイプのプロパティーに明示的にアクセスしたい時
__proto__を使えば出来ますが、__proto__の有無はブラウザ依存なのでまだ使わない方がいいと見たことがあります
正式にはどうやればいいのでしょうか
906Name_Not_Found:2014/05/01(木) 04:18:22.90 ID:???
>>905
.constructor.prototypeではなくて?
907Name_Not_Found:2014/05/01(木) 04:32:02.47 ID:???
>>906
そうでした・・
かなり分かってきたと思っていたのですが何かまだ混乱しているようです
ありがとうございました
908Name_Not_Found:2014/05/01(木) 07:50:59.25 ID:???
少し前にbindの話題が出てたけど
lodashの_.bindって便利だね
909Name_Not_Found:2014/05/01(木) 08:15:19.98 ID:???
undefinedは別に悪くない。undefinedのまま放っておくのがダメなだけ。
もしくはインスタンスと連想配列をごっちゃにして好き勝手使うような設計が悪い。
厳しくやるならインスタンスのプロパティの値へのアクセスは必ずゲッターセッターを伴い、
その時にインスタンスかどうかとセットアップ済みかどうかを確認するのが鉄則。
セットアップ前なのにインスタンスの情報が書き換えられるような設計にしてはいけない。
重要なのはスロットがあるかどうかをまず確認すること。

そして使うスロットは必ずundefinedで置いておくのが流儀。nullに未初期化の意味は無い。
そしてインスタンスとして使われる状態になるとき初めて、適切な型で初期化をする。
つまりスロット作成は継承されるプリコンストラクタで行い、コンストラクタでは値を代入するセットアップ作業だけに努める形になる。

今まで書いたことはES6では常識。ネイティブのコンストラクタは皆そうなってる。
ES5でもES6の<継承>@@create-constructor<非継承>が<継承>[[constructor]]-constructor<非継承>のような形で見えないだけで大体の概念は同じ。
突き詰めていくとJavaScriptでのコンストラクタは<継承>-<非継承>2段階となる宿命。
だから<継承>initialize-constructor<非継承>のような仕組みを考えるのは、実はとてつもなくセンスがいい。
ES5の範囲でまとめきるのはとても大変だが、やるなら<継承>ではundefinedのまま置いておき、<非継承>で代入してセットアップとしてネイティブに沿うのが普通。
910Name_Not_Found:2014/05/01(木) 10:44:32.41 ID:???
>>903
こんな風にしてみるとわかりやすいかも
function F(){
  this.hoge = 1;
}
F.prototype.fuga = 2;

var f = new F();

console.log( f.hoge );
console.log( f.fuga );

console.log( f.hasOwnProperty('hoge') ); // true
console.log( f.hasOwnProperty('fuga') ); // false

f.hoge = 3;
f.fuga = 4;

console.log( f.hasOwnProperty('hoge') ); // true
console.log( f.hasOwnProperty('fuga') ); // true
911Name_Not_Found:2014/05/01(木) 11:01:59.15 ID:???
>>904
それはスマンな
配列をnullで初期化するか[]にするかは難しいところだが、
[]で初期化すると何も処理してない状態かデータが1つもなかったかが
判別出来ないのでやっぱりnullがいいと思われる
ただ、↓みたいなコードが増えて若干気持ち悪いが…
if (!array) {
array = [value];
} else {
array.push(value);
}
912Name_Not_Found:2014/05/01(木) 11:15:37.41 ID:???
>>909
最後の方が今一分からんが…1つ質問

var hoge = obj.getHoge(); // hogeは何らかのオブジェクト(数字とかではない)

とした時に、obj.hoge_ が未初期化(setHoge()されてない)時に何を返すの?
普通 null でしょ。undefined を返しちゃうの?
それとも getHoge() { return this.hoge_ ? this.hoge_ : null; } みたいなのを全部に書くか?
これだと this.hoge_ を undefined にしたままに出来るが面倒だ
913Name_Not_Found:2014/05/01(木) 12:19:40.69 ID:???
>>912
未初期化(hoge_===undefined)だとエラーにする。メソッドは未初期化なのに処理を進めてはいけない。
ただし未初期化な状態というのは原則継承の最中の特別な状態でしかありえない。
当然コンストラクタを通して使える状態にするときにはundefinedは残さない。

逆に、未初期化な状態だと分かるためにundefinedで置いておくことが大事。
未初期化なのにnullにしてしまうと、未初期化なのか正常に初期化された結果nullが入っているのか分からない。
つまりメソッドは処理をしていいかどうか分からない。
その場合別途、初期化フラグのプロパティを用意しなければならなくなる。

そういったことを考慮するとこれが

function Human(name) {
 this.name = name;
}

こんな感じになる
914Name_Not_Found:2014/05/01(木) 12:31:13.55 ID:???
import ASSERT from 'lib/ASSERT.js';
const _HumanName_ = Symbol('HumanName');

export class Human {
 static [Symbol.create]() {
  let obj = {
   __proto__: this.prototype,
   [_HumanName_]: undefined
  };
  //* プロトタイプ最上位にProxy検問を設ける
   ASSERT.SET_PROTO_UNDEFINED_BARRIER(obj);
  // test only */
  return obj;
 }
 constructor(name) {
  // instanceof && hasOwn && isUndefined
  ASSERT.CHECK_UNINITIALIZED(this, [_HumanName_]);
  ASSERT.MATCH_STRING(this, {minLength: 1, maxLength: 100});
  this[_HumanName_] = str;
 }
 get name() {
  // instanceof && hasOwn && !isUndefined
  ASSERT.CHECK_INITIALIZED(this, [_HumanName_]);
  return this[_HumanName_];
 }
}
915Name_Not_Found:2014/05/01(木) 12:32:15.67 ID:???
>>911
個人的には配列は [] で初期化して値チェックを行わない処理にする
null で初期化すると値の正当性検査が必要だが、[] なら for, forEach 共にそのままパスする
Array.prototype 系メソッドもそういう処理になってたと思う(自分の知る限りでは)
916Name_Not_Found:2014/05/01(木) 14:47:16.87 ID:???
>>898

> > ・変数定義するときは必ず代入する(代入したら値はなるべく変更しない)
> なるべく変更しないって曖昧な表現だけどまぁundefined以外の値で初期化と同じ事だよ

それはたぶん勘違いしてる。

君の言うのは「とりあえず初期化しておいて、あとで変更する」
この二つが一連の操作になってるでしょ?

それは、値を書き換えているわけで、それをやっちゃだめと言ってる。

> var a;
> if (hoge) a = b[c];

このコード、明らかに aをundefinedから何かの値に書き換えるという操作を行う。
ここで書くべきなコードはこれ。

var a = hoge ? b[c] : undefined;

aには最初に値を入れてから書き換えない。

undefinedは値が存在しないことを意味するので、原則として代入したらいけない。
だからこの例はaにundefinedを代入することになるのでよくない。
(しかし元のコードがundefinedになる以上それに合わせるしか無いのでこう書いた

>>899の例はhogeが偽の時の仕様がa = undefined から -1 に変わってるのでだめ。
917Name_Not_Found:2014/05/01(木) 14:50:36.81 ID:???
>>911
> 配列をnullで初期化するか[]にするかは難しいところだが、
> []で初期化すると何も処理してない状態かデータが1つもなかったかが

それは一概に決めるもんじゃない。

変数が配列しか入らないのなら[]にするべき。
区別する必要があるときだけnullを入れる。

何も考えずに適当な値で初期化していればいいという考え方はダメ。
原則として変数は正常な値を代入し、その後で書き換えないようにする。
これが完全にできるとは限らないが、そうした方がコードは複雑にならずに済む。
918Name_Not_Found:2014/05/01(木) 16:12:47.96 ID:???
スロットって何?ES6の概念?
919Name_Not_Found:2014/05/01(木) 17:23:18.45 ID:???
Object.create系、
Array.indexOf
以外に、使いがちだけど実はES3にはないものってありますか?
920Name_Not_Found:2014/05/01(木) 17:48:27.25 ID:???
>>918 「スロット」はゲッタセッタのように、メッセージを受け取って値を保管したり提出したりするもの
もしくは単体で扱うことができれば変数のような存在になる
そしてプロトタイプベース言語では、名前付きスロットの集合がオブジェクトと呼ばれる

そして「プロパティ」は普通クラスベース言語でのクラスによって紐付けられるアクセサの集合のことを言う
スロットと違うのはオブジェクトの構成要素というより、フィールドを介してオブジェクトに関連付けられてるものということ

ただしJavaScriptでは、スロットの集合であるディスクリプタの集合がオブジェクトというようになっていて
その「オブジェクトに属するスロット二重構造」のことをプロパティと読んでいる
そして、ECMA仕様では所謂内部プロパティのことを、ディスクリプタを格納するわけではないのでinternal slotと呼ぶ
921Name_Not_Found:2014/05/01(木) 17:49:42.53 ID:???
初期化されてなくて潜在的バグになるって経験があまりないから
喧喧諤諤されてる話題がいまひとつ分からないな
オブジェクトが渡るところにundefinedで渡る→メンバアクセスでエラー
ってことは良くあるけど
ちゃんとエラーになるから潜在的にはならないし
922Name_Not_Found:2014/05/01(木) 20:04:37.93 ID:???
jqueryのイベントハンドラでは
イベントを起こした要素がthisに入っていますが
同じものはイベントオブジェクトのcurrentTargetにも入っているので、
thisに入れる必要なんてないのでは?
何のために入れてるんですか?
923Name_Not_Found:2014/05/01(木) 20:08:25.57 ID:???
IEで意味不明なバグが出てきたんですが
W =window.open(〜)

子ウインドウを消す

if(W && W.window){

Wが存在しているらしいのでW.window調べるとナゼかエラーが発生し
呼び出し先 (サーバー アプリケーションではなく、サーバー) は消失し、利用できません。すべての接続は無効です。呼び出しは実行されていません。
と表示されWを調べても [object] { } というのが出てきてこのオブジェクトが存在するのかしないのかよくわかんないです
924Name_Not_Found:2014/05/01(木) 20:14:50.02 ID:???
>>922
なんでだろうね。楽だからじゃね?
$.eachなんかもそうだけど、あのせいで
本来のthisキーワードの使い方がわからなくなってる人が増えた印象
925Name_Not_Found:2014/05/01(木) 20:17:08.61 ID:???
>>923
IEのwindowにはclosedっていうプロパティがあるよ
926Name_Not_Found:2014/05/01(木) 20:48:46.96 ID:???
var obokata={}
obokata.value="捏造";
obokata.stap=(function(){alert(this.value)});
obokata.stap();//捏造
obokata.stap2=(function(){alert(this.value)})();・・undefined

何故、obokata.stap2=(function(){alert(this.value)})();では
this.valueに文字列"捏造"が入らないのでしょうか?
obokata.stap2=(function(){alert(this.value)})();の即時実行関数式
でthis.valueに文字列を入れる方法を教えて下さい
927Name_Not_Found:2014/05/01(木) 20:53:11.22 ID:???
>>926 obokata.stap2=(function(){alert(this.value)}).call(obokata);
928Name_Not_Found:2014/05/01(木) 20:55:04.53 ID:???
>>926
obokata.stap2=(function(){alert(obokata.value)})();
929Name_Not_Found:2014/05/01(木) 22:06:37.03 ID:???
画像の高さと幅を取得する方法を教えてください
930Name_Not_Found:2014/05/01(木) 22:07:52.76 ID:???
>>927-928
ありがとうございます。
obokata.stap2=(function(){alert(this.value)})();
この時のthisってグローバルオブジェクトが入ってみたいですが、
こういう仕様なのでしょういか?
931Name_Not_Found:2014/05/01(木) 22:10:54.94 ID:???
>>930
グローバルじゃなきゃ困るんじゃね?
932Name_Not_Found:2014/05/01(木) 22:12:21.50 ID:???
>>931
そうなんですか?
933Name_Not_Found:2014/05/01(木) 22:19:21.24 ID:???
>>932
thisキーワードってのは、超大雑把に言うと
その関数が実行された時、その関数は誰のメソッドだったか?ってことじゃん

obokata.stap=(function(){alert(this.value)});
obokata.stap();//捏造

こう書いたらfunction(){alert(this.value)}はまさに、obokataオブジェクトのメソッドとして実行されてる
obokata.stapって書いてるんだから。これはわかるでしょ
いっぽう

obokata.stap2=(function(){alert(this.value)})();

この場合、function(){alert(this.value)}は、obokataの持ち物じゃないじゃん?
ただ( 関数オブジェクト )() って書いて実行しただけなのだから
934Name_Not_Found:2014/05/01(木) 22:31:47.32 ID:???
>>913
なんか話しが噛み合わないが…多分、初期化(未初期化)の事を勘違いしてる
初期化ってのは(メンバー)オブジェクトを使える状態にする事だぞ
コンストラクタで全部初期化出来ればそりゃ楽だが、どうしても物凄く後になる事もある
(ユーザー操作の結果によって初期化するとか)

なのに順番を間違って先にアクセスしちゃった場合に未初期化なのか、そもそも存在しない
メンバーにアクセスしてundefinedになったのか、どっかのバグで初期化後にundefinedが
伝搬して代入されているのかを判別しやすくするってだけだ
だからundefinedをみつけたら完全にtypoのようなコーディングミスといえる

> 未初期化なのか正常に初期化された結果nullが入っているのか分からない。
んなわけない
nullはオブジェクトとして使える状態なわけないからnullの場合は未初期化と同じ事
初期化してエラーになった可能性もあるが、そういう事がある場合は別途エラーコードを
用意した方がいいのかも
935Name_Not_Found:2014/05/01(木) 22:36:31.22 ID:???
>>915
確かに厳密に値の正当性チェックが必要ないならそれでいいとは思う
(うっかりnullにアクセスしないから安全だし)
936Name_Not_Found:2014/05/01(木) 22:44:52.06 ID:???
>>925
ありがとうございます。
これからはそれ使う事にします
937Name_Not_Found:2014/05/01(木) 22:49:23.37 ID:???
>>916
これも>>934で返答したのと同じだ

null→未初期化変数にアクセスしてる
undefined→typoとかしょうもないミスの可能性がある

これを区別するってだけのことだよ
パフォーマンス的な事を気にしてるっぽいけど、それはarray.lengthをfor文の外に
かかないと駄目だっていってるようなもんだぞ
計測結果でもみせてくれ
938Name_Not_Found:2014/05/01(木) 22:57:47.88 ID:???
>array.lengthをfor文の外に
>かかないと駄目だっていってるようなもんだぞ

こんなの常識だろ
ハイパフォーマンスJavaScriptにも書いてある
オライリーなめてんの?
939Name_Not_Found:2014/05/01(木) 22:59:00.52 ID:???
俺はforの外じゃなくて
for (i=0,len=a.length;
みたいに書いてるけど
940Name_Not_Found:2014/05/01(木) 23:14:18.63 ID:???
array.length 程度のものはループ内に書こうが事実上変わらないだろう

ループの外に変数作ってループの中から代入や再利用する類いの最適化は
コンパイラの最適化が利かなくなって
却ってパフォーマンスを落とすこともある
941Name_Not_Found:2014/05/01(木) 23:30:54.32 ID:???
どんなしょぼい最適化だよw
ループ中にあろうが結局全部巻き上げられるんだから
そんなわけの分からないことは起きないだろ
942Name_Not_Found:2014/05/01(木) 23:50:01.45 ID:???
コンパイラの一般論として

var len = array.length;
for (i = 0; i < len; ++i) {
これだとforを越えてlenを保存しておかないといけない

for (i = 0; i < array.length; ++i) {
これだとfor内でarrayが変更されない限りはarray.lengthはfor内の一時変数になる

巻き上げとは無関係だ
943Name_Not_Found:2014/05/01(木) 23:53:52.43 ID:???
実際に測ればそんな変な最適化なんてありえないと分かると思うんだが
944Name_Not_Found:2014/05/02(金) 00:54:04.56 ID:???
>>935
読み返してみたら誤解を招く書き方だったので訂正を
・値の正当性検査は予めしておくが、nullチェックはしない
・必要なら Array.isArray を使う
・あるいは、ToObject する(ArrayLikeなオブジェクトを許容する為。forEachはこの挙動だったと思う。)

いずれにしても、Object型であることは保証して最低限のエラーは出さないようにコーディングする
nullを混在させると無駄にチェックが必要になるので、個人的には使わない
945Name_Not_Found:2014/05/02(金) 00:56:02.83 ID:???
実際に測れば起きるよ
数値演算主体で変数が多いやつとか
変数は全部ループ内で宣言+初期化した方が10倍くらい速くなったりする
946Name_Not_Found:2014/05/02(金) 01:16:54.44 ID:???
そんなベンチ結果見たことない
証拠を出さないとおぼちゃんと同じ
947Name_Not_Found:2014/05/02(金) 03:00:28.11 ID:???
「初期化した方が速くなりまぁす」
「何倍ですか?」
「200倍くらいです」
948Name_Not_Found:2014/05/02(金) 04:35:53.16 ID:???
「変数の値がもしundefinedかnullなら指定した値を代入」をする
lodashの関数はありませんか?
_.defaultsにして欲しいのですが、オブジェクトのプロパティにしか対応してないようで
949Name_Not_Found:2014/05/02(金) 06:46:35.70 ID:???
jqueryプラグインは無名関数の中で設定すると書いてあるサイトがありますが
jQuery.fnのメンバを追加するだけなので、
他の変数に影響を与えることも、
方の変数の影響を受けることもないので、別にいいのでは?
950Name_Not_Found:2014/05/02(金) 08:01:22.56 ID:???
>>942
array.lengthを使うと、インタプリタには、
配列のサイズが変わったかどうかがわからないから、
毎回アクセスするんじゃないの?

配列のサイズが変わったかどうかを突き止めるのは、
かなり大変でしょ?
インタプリタはそんなに賢いかな?

var len = array.length;
と最適化を信じず、変数に代入しても、メモリの損はしれてる

漏れは、何回も呼ぶ関数はすべて、変数に代入してから、
その変数で呼び出しているよw
どこまで最適化されるか、わからないから

// 乱数を発生させる。少数点以下を切り捨てる
var fRnd = Math.random, fFlo = Math.floor;
fFlo(fRnd() * 100);
951Name_Not_Found:2014/05/02(金) 08:28:59.36 ID:???
次スレは975超えたらネ。
952Name_Not_Found:2014/05/02(金) 08:30:58.55 ID:???
スレの勢いからすると960過ぎくらいでもいいと思う。
どこかの板のスレみたいに950で立てるのは馬鹿だがw
953Name_Not_Found:2014/05/02(金) 11:32:23.42 ID:???
>>950
> 配列のサイズが変わったかどうかを突き止めるのは、
> かなり大変でしょ?
まぁ多分大変だろうね
ただ
http://jsperf.com/caching-array-length/4
↑ここでベンチ結果が出てるけど、len代入とarray.lengthそのままでは全く速度は同じだね(青と黄を比較)
ちなみに With caching Part 2 の結果が爆速になってるけど処理内容を変えちゃってるから駄目だろ…
954Name_Not_Found:2014/05/02(金) 11:36:13.49 ID:???
>>953
なんか少し古いバージョンだった…
http://jsperf.com/caching-array-length/25
これが最新だった(結果は一緒だけど)
955Name_Not_Found:2014/05/02(金) 14:26:24.83 ID:???
>>934話の流れを見て欲しい。あくまで2段階コンストラクトを行うとき、及び内部的なプロパティの話をしている。
この場合の未初期化というのは継承可能、共有可能な第一コンストラクタ、つまり@@createやそれに当たる関数に処理されて、
そのオブジェクトがそのクラスのインスタンスたる最低限の処理、つまり内部プロパティに当たるものだったり、
プロキシの設定を済ませてはいるが、メソッドでの処理に必要な情報の多くを決定=初期化されていない状態を指している。

コンストラクタを「作る」フェイズと「初期化する」フェイズにキッチリ分け、両方を意識することでコンストラクタ≒クラスを継承、再利用しやすくなる。
ES6でもそれ=@@createがあるからネイティブクラスの継承が容易にできるようになっている。
例えば class MyArray extends Array {};;; obj = new MyArray(...arg) は obj = MyArray.call(MyArray[@@create]() ,...arg) と大体等しく、
まず作る段階でMyArray.__proto__[@@create]、つまりArray[@@create]がthisをMyArrayとして呼ばれて適切な処理を受けることが出来る。
そして続けてのconstructorもデフォルト処理のsuper(...arg)が適切に効く。

コンストラクタを二段階にするのは他にも理由がある。それは安全性のため。
コンストラクタはthisを初期化するものだが、それだとClass.call(tekitou)みたいな使い方ができてしまう。
これを許すとProxy性を持たないArrayだったり、「規格外の正当なインスタンス」が存在し得るので各所でのチェックが余分に必要となったりといいことがない。
だから、ClassのconstructorのthisはそのClassの未初期化のインスタンスのみを受け付けるようにする。
956Name_Not_Found:2014/05/02(金) 14:37:42.34 ID:???
しかしESにはクラスは存在せず、インスタンスとその作成元を保証してくれるような静的な繋がりもないので、インスタンスかどうかの判断が問題になる。
ここでES6内部仕様に習うと、そのクラスの代表的な内部プロパティの有無で判断する。
そして内部プロパティを持っていても、初期化済みのインスタンスを再初期化する事のないように、内部プロパティがundefinedかどうかで初期化済みを確かめる。
逆にメソッドでは、未初期化のインスタンスがかけられないように、初期化済みを確かめる。

つまり安全性のため、内部プロパティを設定、確保する段階がコンストラクタより前に必要になる。
そうすることで最小限のコードでクラスの安全性と発展性を両立させることができる。
プロトタイプベースで内部的にダックタイピングを利用するしかなくても、厳正なクラスを提供することが出来る。

そして厳正なクラスにおいて、プロパティとデータをごっちゃにすることはない。
原則プロパティとはアクセサであって、ネイティブのクラスでもメソッドでオブジェクトの外部プロパティを直接利用するというものはほぼ無い。
必ずアクセサ経由で内部プロパティの変更、参照を伴うものになっていて、メソッドは内部プロパティを利用するようになっている。
そして原則内部プロパティがundefinedのときは即エラーにする。nullは0と同じような列記とした初期化済みの値で、未初期化のような意味は持たない。
957Name_Not_Found:2014/05/02(金) 16:53:55.10 ID:???
何回も使うものはあらかじめ変数にキャッシュしておくっていうのが
プログラミングにおける合理性なわけじゃん
万が一謎の最適化のせいでその方が遅くなるとしたら、
それは最適化の方が間違っているんだから
プログラマーが気にする必要はない
間違ったものはいずれ修正されていくから。
最適化を気にして非合理なコードを書くのは本末転倒すぎる。
よってC級プログラマー。
958Name_Not_Found:2014/05/02(金) 16:56:56.06 ID:???
最適化厨は最適化にかかるコストを頭に入れてないよね
くそダサいコードを最適化するのもコストがかかるんですけど?
959Name_Not_Found:2014/05/02(金) 17:17:33.63 ID:???
筋の悪い最適化に合わせて筋の悪いコードを書いて
それが時間の経過と共に非最適化していくと目も当てられない
プログラマーはひたすら筋のいいコードを書くことを心がけてさえいればいい
960Name_Not_Found:2014/05/02(金) 21:21:53.98 ID:Xjj8/aiF
普通はobj.propを一々明示的にキャッシュしたりしないのが筋がいいが、配列のlengthだけは特別
配列のlengthは知っての通りプロパティでもなく、アクセサでもなく、プロキシのようなオブジェクトのハックによって実現されてる
特殊中の特殊で一般的なキャッシュ最適化の話はできない
どれだけ処理系が配列の実装に特別な工夫を凝らしてるのかという話になる
そこを把握して期待するのは余りに重いので、プロキシが気持ち悪ければキャッシュしてもいい
961Name_Not_Found:2014/05/02(金) 21:40:57.05 ID:???
それは筋がいいのではなく単なる怠慢
ローカル変数が一番速いという真理は変わらない
962Name_Not_Found:2014/05/02(金) 22:00:09.01 ID:???
「そうした方が速くなるのが当たり前」なことをするのが筋のいいプログラミング
わざわざローカル変数に入れなくても最適化してくれる環境もあるかもしれないが、
そんな働くか働かないか分からない最適化に期待するのは筋がいいとは言えない
963Name_Not_Found:2014/05/02(金) 22:14:47.22 ID:???
> 「そうした方が速くなるのが当たり前」なことをするのが筋のいいプログラミング

違うよ。

最優先に考えるのが開発コストを下げること。
速度に関して言えば効果が高い所のみ手を入れるのが筋のいいプログラミング

だからライブラリを使うんだろう?
ライブラリを使うと関数呼び出しが増えるからたいてい遅くなる。
それでも使うのは開発コストを下げるため。
964Name_Not_Found:2014/05/02(金) 22:25:02.63 ID:???
>>962
多くの開発者が考える「そうした方が速くなるのが当たり前」は当てにならないと言う当たり前の常識を知らない時点で(ry
965Name_Not_Found:2014/05/02(金) 22:43:55.20 ID:???
thickboxの最新版なんですが、
子を閉じたときに親がリロードするのを止めるにはどこをどうしたらよろしいでしょうか?
ご教示お願いいたします
966Name_Not_Found:2014/05/03(土) 00:17:54.40 ID:???
>>963
開発コストを最優先した筋のいいプログラミングなんてないから
それは安いプログラミング
それ以上でも以下でもない
967Name_Not_Found:2014/05/03(土) 00:19:25.90 ID:???
>>964
迷信に頼るのではなく、自明の事実に基づくべきだと言っているんだよ
カスが
968Name_Not_Found:2014/05/03(土) 00:25:20.31 ID:???
>>955,956
俺は934だが単なる開発ポリシーの話しをしてるのに、あんたは随分規格に詳しいようだが
ES6のclassの継承の話しをされても、実装されてないもんは全く実感出来んしよう分からん…

ES6のclassの継承になんらかの問題がありそうな主張は分かったんで、実装されたら
また気にしてみるよ
969Name_Not_Found:2014/05/03(土) 00:31:01.97 ID:???
>>960
> 普通はobj.propを一々明示的にキャッシュしたりしないのが筋がいいが、配列のlengthだけは特別
Float32Array とかはlengthは変更不可(pushとかも不可)だから、その前提は常に正しいとは言えない
970Name_Not_Found:2014/05/03(土) 00:38:32.52 ID:???
>>966
開発コストって単に人件費をムリクリ抑える事をいうのでなければ、
開発効率を追求する事は最優先だと思うよ

開発効率を追求して開発コストを抑える事が出来れば筋のいいプログラミングと言える
971Name_Not_Found:2014/05/03(土) 00:49:20.95 ID:???
>>967
おまえが経験浅いのは分かったから、もう黙ってろよw
972Name_Not_Found:2014/05/03(土) 01:12:26.60 ID:???
論ずるなら、その主張の根拠となるコード例の一つでも出せばいいのに
973Name_Not_Found:2014/05/03(土) 04:09:29.76 ID:???
ローカル変数に代入するというごく普通のテクニックまで否定し出してびびるわw
まぁ俺には関係ないからいいけど
974Name_Not_Found:2014/05/03(土) 07:17:44.96 ID:???
いつの間にか使わなくなったプロパティーを見つけたいと思います
プロパティー名を文字列として検索してどこにもなければ使われていないと判別できると思います
そういうことをやるプログラムなどはありませんか?
975Name_Not_Found:2014/05/03(土) 08:24:50.65 ID:???
976Name_Not_Found:2014/05/03(土) 11:30:41.82 ID:???
>>968
ES6に限った話じゃないよ。ES6で大々的に摂り入れて成功してる話を交えただけ。
ES5で全部を真似するのは難しいけど、考え方、ポリシーは摂り入れられる。
話が膨らんだがnullの件については>>956の最後の段落が言いたいこと。
977Name_Not_Found:2014/05/03(土) 12:09:26.45 ID:???
口だけで筋のいいとか言われてもわからんから、サンプル見せてくれよ

できれば、悪い例とどうしたら筋が良くなるって解説つきで
978Name_Not_Found:2014/05/03(土) 12:42:24.11 ID:???
>>973
ローカル変数に代入するのは
開発しやすくするためで
速度のためじゃないんだよw
979Name_Not_Found:2014/05/03(土) 13:08:24.61 ID:???
>>973
論点ズレてるなあ。
そんなレスしてるから経験浅いとか言われちゃうんだよ。
980Name_Not_Found:2014/05/03(土) 13:19:47.64 ID:???
いや俺は変な2chねらーの意見よりも
ハイパフォーマンスJavaScriptの著者のニコラスを信用するからw
経験ワロスww
981Name_Not_Found:2014/05/03(土) 13:41:47.27 ID:???
本に書いてあることは全て正しいと思ってるタイプか
専門書で間違ったこと一切書いてない本なんてそうそうないぞ
982Name_Not_Found:2014/05/03(土) 13:57:28.44 ID:???
俺も本の正規表現が間違ってて数日悩んだ事があったから
軸となる本と、ネットで情報収集、ココで質問するといい

学校の教科書だって初版だと訂正箇所みたいなの沢山出てくるんだから
983Name_Not_Found:2014/05/03(土) 14:09:29.08 ID:???
著者を信用してるって言うのと、本に書いてあることを信用してるっていうのはまったく別次元話だろw
984Name_Not_Found:2014/05/03(土) 14:12:33.66 ID:???
教科書で自分のスキルを強化しょう
985Name_Not_Found:2014/05/03(土) 14:27:46.23 ID:???
いったん変数に代入するのは、古いPC・ブラウザ向けの対策。
新しいものは、変数が少し増えても、影響は受けないだろ

それに、Webサイトはプログラムなどと違って、
1回しか見ないことも多いので、
時間をかけて最適化して元が取れるのか、という観点もある

それより、Mathの関数を何百回も呼ぶので、
変数に代入して使っているんだが、これは正しいのか?
>>950
// 乱数を発生させる。少数点以下を切り捨てる
var fRnd = Math.random, fFlo = Math.floor;
fFlo(fRnd() * 100);

それと、配列のアクセスには、forEach系を使う、
って誰かが書いていたけど、forの方が速いのじゃ?
986Name_Not_Found:2014/05/03(土) 14:43:36.63 ID:???
>>985
>>950ではないが…。
- Math.random をローカル変数にキャッシュするのは手法として間違ってない。
- 一般に関数呼び出しは遅いので forEach より for が速い。
987985:2014/05/03(土) 15:05:47.76 ID:???
Math.random, Math.floorは静的関数かな?
なぜこれらを変数に代入すると、速くなるの?
988Name_Not_Found:2014/05/03(土) 15:09:21.01 ID:fUUxJBT9
array.lengthをキャッシュするのと
int8array.lengthをキャッシュするのと
Math.randomをキャッシュするのは全部事情が異なる
上からプロキシ、ゲッター、スロットへのアクセスだから

あと、JSとネイティブを跨ぐ最適化は困難という問題がある
だからV8なんかはどんどん自己ホスト化を進めていて特にMath系の関数ですごく効果が出てる
例えばMath.randomも全部JS化されているから完全にインライン化される
https://code.google.com/p/v8/source/browse/branches/bleeding_edge/src/math.js#148

三角関数系もそう
だがその副作用で制度が落ちたと問題になった
今も最後尾数字が1変わるくらいの違いがある
浮動小数は===で比較してはいけない(教訓)
989986:2014/05/03(土) 15:33:27.34 ID:???
>>987
Math.random はグローバル関数であり、ローカル関数よりも遅い(スコープチェーン)
更にプロパティアクセス演算子も1回しか使用しなくて済む
990985:2014/05/03(土) 16:02:33.62 ID:???
例えば、MathのアドレスがA番地として、
randomのアドレスがBとして、

var p = Math.random;
とすると、pにはB番地が入る?

でも、変数に代入せず、Math.randomのまま使うと、
毎回、A→Bの間接参照が行われるの?
なぜインタプリタは、Bを変数に代入して使わないのか?
991986:2014/05/03(土) 16:25:04.03 ID:???
>>990
>>989でも説明したが、スコープチェーン
プロパティアクセスが遅い理由はプロトタイプチェーン
992Name_Not_Found:2014/05/03(土) 16:25:35.71 ID:???
当然してる
ただMathに変更がないことを確認するオーバーヘッドがある
それとただのキャッシュだけではなくて、random内の処理が埋め込まれて、それからさらに最適化がされる
その辺でより最適化を望むならES7のRelationshipsに期待するといい
http://wiki.ecmascript.org/doku.php?id=strawman:relationships
これは確認がいらない、というか、処理系の代わりに、責任をset/get関数側が負う設計
もしそれを守らなかったり、設計ミスをすると、最適化/非最適化で結果が変わるというJSには珍しいアンセーフな代物
その代わり最高のパフォーマンスが出る
993Name_Not_Found:2014/05/03(土) 17:09:40.92 ID:???
やっとキャッシュは有効というまともな話になったか
キャッシュ否定厨はキャッシュに親でも殺されたのかよw
994985:2014/05/03(土) 17:15:16.97 ID:???
>>988
>プロキシ、ゲッター、スロットへのアクセスだから
結局、"a.b"と、ドットが付いていたら、
何でも変数に代入した方がいいのかな?

Math.randomまで代入するのは、やりすぎのような気もします
変数が多くなって、プログラムがわかりにくくなる

プロキシ、ゲッター、スロットの中で、
どれを変数に代入すべきでしょうか?

長時間、お付き合いありがとう
古いPC・ブラウザのことを考えると、
どうしてもインタプリタが最適化しやすい、
プログラミングを考えてしまいます
995Name_Not_Found:2014/05/03(土) 17:34:08.74 ID:???
chromeのconsole.timeの最小単位は1msなのでしょうか?
小数点以下が0以外になったのを見たことがありません
996Name_Not_Found:2014/05/03(土) 18:00:49.69 ID:???
textareaにある文字をそのまま$(textarea).val()で取得してdata-unk=""の中に入れちゃおうと思うんですが
これってエスケープとか必要ですか?
997Name_Not_Found:2014/05/03(土) 18:00:50.01 ID:???
dom要素へのidの設定はsetAttributeを使うのとidプロパティへの代入と
どっちがいいんですか?
998Name_Not_Found:2014/05/03(土) 18:07:55.32 ID:???
変数に代入って言葉そろそろやめませんか
999Name_Not_Found:2014/05/03(土) 18:27:22.68 ID:???
じゃあいい言葉考えろよ
1000Name_Not_Found:2014/05/03(土) 18:42:37.42 ID:fUUxJBT9
皆最適化最適化言うけど、なかなかCPUのことまで考えないと
最近のCPUはコードのパターンに添って様々な先読みをしている
そして外れた時のペナルティがかなりデカイ(当たったことを考えたら)
問題はそれが必ずしも直感と一致しないこと

例えばnは0から3までの整数の乱数で、nが0,1のときA,2のときB,3のときCを実行するとする

普通に考えると、条件評価の期待値の少ない少ないこういうコードになる
if (n < 2) return A()
if (n == 2) return B()
return C()

しかし分岐予測のことを考えたらこういうコードになる
if (n == 3) return C()
if (n == 2) return B()
return A()

簡単に説明すると、予測が外れる確率が、Aの分岐はわからないから50%、B、Cの分岐は分岐しないと予測して25%
予測が外れる期待値が一番低いのが2番目のようなコードになる
もちろん実際はもっと複雑だが、筋の良いコードが高速だとは限らない
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。