プロジェクト

全般

プロフィール

JavaScript » 履歴 » バージョン 1

kanata, 2025/04/13 15:52

1 1 kanata
# JavaScript
2
3
{{rawhtml(<canvas id="map"></canvas><script src="/javascripts/pagemap.min.js"></script><script>pagemap(document.querySelector("#map"));</script>)}}
4
5
{{toc}}
6
7
# Portal,TextBook,Cheat Sheet
8
9
Lastest Hacking News - JavaScript Cheat Sheet Free Download
10
http://www.cheatography.com/davechild/cheat-sheets/javascript/pdf/
11
12
はてな教科書 JavaScript 編
13
https://hatena.github.io/Hatena-Textbook-JavaScript/
14
15
JavaScript Programming お気楽 ECMAScript2015 超入門
16
http://www.geocities.jp/m_hiroi/light/js2015.html
17
18
K-TechLaboゼミ用学習ノート - JavaScriptのテキスト
19
http://www.k-techlabo.org/blog2/?page_id=1022
20
21
JavaScriptの入門書を jsprimer.net で公開しました
22
https://efcl.info/2018/10/26/jsprimer.net/ https://jsprimer.net/
23
24
JavaScript Promiseの本
25
http://azu.github.io/promises-book/
26
27
trekhleb/javascript-algorithms
28
https://github.com/trekhleb/javascript-algorithms/blob/master/README.ja-JP.md
29
30
>多種多様なアルゴリズムやデータ構造に関するサンプル例がまとめられたリポジトリ
31
32
初心者に分かりやすい!JavaScript 入門チートシート
33
https://commte.net/javascript-basics
34
35
モダンJavaScriptについて
36
https://qiita.com/ayuoyk/items/b0183b36881f69b91282
37
38
39
40
# Gadgets
41
42
## jQuery の使用
43
44
次のコードを実行することにより、jQuery を読み込んでいないページでも jQuery を使用することができる。
45
46
```Javascript
47
if (!window.jQuery) {
48
    document.body.appendChild((function(){
49
        var s = document.createElement("script");
50
        s.type = "text/javascript";
51
        s.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js";
52
        return s;
53
    })());
54
}
55
```
56
57
## jQueryの使用(Chrome DevToolsのSnippets機能編)
58
59
ChromeのDev Toolsを開き(Ctrl+Shift+IかF12キーを押す)、Sourcesパネルを開いてその中のSnippetsタブをクリック。その後、左側の空白欄を右クリックしてメニューを表示し、その中の『New』をクリック。
60
61
そうすると新しいsnippetが追加され、真ん中にコード記入欄ができるのでsnippetの名前を『jqueryfy』、コード下記のように記入し保存。
62
63
```
64
(function () {
65
  if ( !window.jQuery ) {
66
    var dollarInUse = !!window.$;
67
    var s = document.createElement('script');
68
    s.setAttribute('src', '//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js');
69
    s.addEventListener('load', function(){
70
      console.log('jQuery loaded!');
71
 
72
      if(dollarInUse) {
73
        jQuery.noConflict();
74
        console.log('`$` already in use; use `jQuery`');
75
      }
76
    });
77
 
78
    document.body.appendChild(s);
79
  }else if( !window.$ ){
80
      window.$ = window.jQuery;
81
      console.log("'$' is jQuery")
82
  }
83
 
84
})();
85
```
86
87
jqueryfyの箇所を右クリックしてメニューを表示し、『Run』をクリックする。
88
89
while(isプログラマ) - Chrome DevToolsのSnippets機能がすごい便利そう
90
http://am-yu.net/2014/08/07/chrome-devtools-snippets/
91
92
93
## ページ内に仕掛けられた全てのEventListenersの設定元の一覧をダンプ
94
95
last log - ページ内に仕掛けられた全てのEventListenersの設定元の一覧をダンプし、必要な対策を施す方法
96
http://uupaa.hatenablog.com/entry/2014/09/05/004431
97
98
実際にconsoleに貼り付ける時は、関数の中身だけをコピペする
99
100
```javascript
101
function getAllNodeEventListeners() {
102
  var nodes = [].concat(window, [].slice.call(document.getElementsByTagName("*")));
103
104
  nodes.forEach(function(node) {
105
    var result = getEventListeners(node);
106
    for (var type in result) {
107
      console.log(type, result[type]);
108
    }
109
  });
110
}
111
```
112
113
# Chrome DevTools Snippets
114
115
ChromeのDevTools(開発者ツール)にはSnippetsという、コンソールでデバッグの際に使うスクリプトを保持してくれる機能がある。
116
117
DevTools Snippets
118
http://bgrins.github.io/devtools-snippets/
119
120
121
122
# Debug
123
124
JavaScriptが敬遠される理由の7割ぐらいは、このデバックのし難くさにかかっていると思う。
125
まだ実機で試してないのもあるけど。
126
127
JavaScriptのデバッグ方法 – JSを嫌いにならないためのTips
128
http://postd.cc/how-to-not-hate-javascript-tips-from-the-frontline/
129
130
Qiita - JavaScript,jQueryの爆速コーディング、デバッグ方法論の勧め~実践向け逆引き(windows,chrome向け)~
131
http://qiita.com/shgkt/items/0054670269e1d3aa49b8
132
133
javascript-visualizer - JavaScriptの実行内容を可視化
134
https://tylermcginnis.com/javascript-visualizer
135
136
137
138
139
## alert
140
141
最も原始的なのが、alert()を使う方法です。同様にconfirm()を使うこともできます。
142
C言語のprintfで変数を出力したり、Java言語のSystem.out.println()でインスタンスの中身を出力するのと同じです。
143
144
```javascript
145
alert("Alex");
146
```
147
148
## debuggerステートメント
149
150
デベロッパーツール側では手動でブレークポイントを配置したものと認識されます。
151
152
```javascript
153
debugger;
154
```
155
156
## console.log,console.warn,console.error,console.info
157
158
いずれも以下のようなC言語で使われるような出力フォーマットをサポートします。
159
160
```javascript
161
console.log("Hello %s", "Brian");
162
```
163
164
Qiita - console.logまとめ 2016年夏
165
http://qiita.com/ykyk1218/items/0f5858d077d43a49cfe2
166
167
## console.table()
168
169
結果はコンソール上にテーブルで出力され、オブジェクトの属性でソートすることができます。
170
オブジェクトの中身、JSON(たぶん)、配列が、視覚的に把握しやすくなります。
171
172
```javascript
173
console.table([[1,2,3], [2,3,4]]);
174
```
175
176
## コールトレースを取得する
177
178
失敗した時だけでなく、成功した時にもコールトレースを確認することができます。
179
非標準の関数ですが、主要なデスクトップブラウザではサポートされています。
180
181
```javascript
182
console.trace();
183
```
184
185
非同期コールは、いかが役に立つかもしれません。
186
187
```javascript
188
TraceConsole.trace();
189
```
190
191
## 誰がオブジェクトを変更するか? Objects.observe + console.trace
192
193
オブジェクトのプロパティの一部が変更されることがありますが、誰が犯人か判らないことがよくあります。
194
このような場合Object.observeが役に立ちます。personオブジェクトに対する全ての変更を確認する場合を見てみましょう。
195
console.traceと併用すると、コールトレースも確認できるので、誰が犯人かまで判ります。
196
ただ、現在(2015.05:未確認)は、Chromeのみがこの機能をサポートしているようです。
197
198
```javascript
199
var person = {
200
  firstName: "John"
201
}
202
203
Object.observe(person, function(changes) {
204
  // This callback runs asynchronousty and aggregates the changes that happened
205
  // in the previous execution turn into `changes` param.
206
  changes.forEach(function(change) {
207
    consote.log(change.type, change.name, change.oldVatue);
208
    consote.trace();
209
  });
210
});
211
Object {firstName."John"}
212
213
```
214
215
## 誰がDOMやHTML要素を変更するのか
216
217
MutationObserverと呼ばれるオブジェクトがあり、これによってDOM要素の監視が可能になります。
218
ドキュメント全体で発生した全ての変更をリストアップしたい場合を考えてみましょう。
219
この場合、ドキュメントは選択されたどのDOM要素にも当てはまります。
220
221
```javascript
222
var observer = new MutationObserver(function(mutations) {
223
  mutations.forEach(function(mutation) {
224
    for (var i = 0; i < mutation.addedNodes.Length; i++)
225
      console.log(mutation.addedNodes[i]);
226
  })
227
});
228
observer.observe(document, { childList: true });
229
```
230
231
Chromeでは、プログラミング以外の解決策も使えます。DOM Breakpointsと呼ばれるもので、バックグラウンドではMutation Eventを使っています。
232
233
## サーバ側でクライアントのエラーログを取る
234
235
実に簡単なのですが、Windowオブジェクトにonerrorイベントハンドラを追加するだけでクライアント側の処理は完了です。
236
ハンドラは、サーバ上にエラー情報を蓄積するRESTのエンドポイントに対してAjaxリクエストを行うことができます。
237
238
```javascript
239
window.onerror = function(msg, url, line){
240
  if(encodeURIComponent) {
241
    var req = new AjaxRequest();
242
    var params = encodeURIComponent(url) + encodeURIComponent(msg);
243
    req.setMethod("POST");
244
    return req.loadXMLDoc("/my/servtet", params);
245
  }
246
  return false;
247
};
248
```
249
250
# jQuery
251
252
【脱JQuery】モダンなJSの書き方
253
https://qiita.com/tatsumi_t2/items/ec41fdc4cf269bfa86bc
254
255
## Cheatsheet
256
257
jQuery Cheatsheet
258
http://lab.abhinayrathore.com/jquery-cheatsheet/
259
260
##  Plugin Sample
261
262
jQueryを利用した演出がかっこいいWEBサイト50個 
263
http://designaholic.cc/2011/01/jqueryweb50.html
264
265
12個のかっこいいjQueryスライドショープラグインまとめ
266
http://webdesignfactory.schoolbus.jp/jquery_slide/
267
268
流行のjQueryでスクロールするサイトを集めてみました
269
http://webrocketsmagazine.com/entry/20111102/scrollable-website-with-jquery.html
270
271
クライアントワークでよくお世話になっているjQueryプラグインいろいろ
272
http://webdesignrecipes.com/jquery-plugins-in-cliant-works/
273
274
##  使いたいけど難あり
275
276
http://grow.weblike.jp/immature_design/jquerys/865.html
277
278
http://galleria.io/
279
280
# JavaScript Emulator
281
282
JSBin
283
http://jsbin.com/
284
285
JSFiddle
286
https://jsfiddle.net/
287
288
glot.io - 様々な言語のコードスニペットが共有できるサイト
289
https://glot.io/
290
291
javascript-visualizer - JavaScriptの実行内容を可視化
292
https://tylermcginnis.com/javascript-visualizer
293
294
295
# JavaScript Beatutify
296
297
Online Javascript beatutify
298
http://jsbeautifier.org/
299
300
# Memo
301
302
くんすとの備忘録 - BATファイルにJScriptを埋め込む
303
http://kunst1080.hatenablog.com/entry/2015/12/15/222711
304
305
LintCI(Web上でJavaScriptのLint)
306
https://lint-ci.io/
307
308
Programming Tutorials and Source Code Examples
309
http://www.java2s.com/
310
311
Qiita - ブレークポイントを使ったJavaScriptデバッグを整理してみた【再入門】
312
http://qiita.com/nekoneko-wanwan/items/02aed17773833c3ad3b2
313
314
Qiita - Reactを使うとなぜjQueryが要らなくなるのか
315
http://qiita.com/naruto/items/fdb61bc743395f8d8faf
316
317
Qiita - JavaScript ショートコードテクニック集(ES6含む)
318
http://qiita.com/ichimonji_haji/items/f602f6c437be9e7daa88
319
320
アプギガ - JavaScriptの学習にオススメなWebコードエディタ「Carbide」の万能すぎる可視化ウィジェットがヤバイ!
321
http://plus.appgiga.jp/masatolan/2016/10/13/57333/
322
323
JavaScriptエンジニアなら知ってるよね? エラー処理のいい書き方、悪い書き方
324
https://www.webprofessional.jp/proper-error-handling-javascript/
325
326
Qiita - ゼロから始めるJavaScript生活
327
http://qiita.com/takahashim/items/7838334d1451fb0a9811
328
329
【翻訳】 2016年にJavaScriptを学んでどう感じたか - 【翻訳】 2016年にJavaScriptを学んでどう感じたか
330
http://kikuchi1201.hateblo.jp/entry/2016/10/26/172404
331
332
Subterranean Flower blog - JavaScriptの関数で何ができるのか、もう一度考える
333
https://sbfl.net/blog/2016/12/26/javascript-function-revisited/
334
335
javascriptのライブラリを一覧にしてまとめてみた
336
https://trueman-developer.blogspot.jp/2016/05/javascript.html
337
338
GitHub - trekhleb/javascript-algorithms
339
https://github.com/trekhleb/javascript-algorithms
340
341
JavaScriptをもうちょっと理解する54のトピック
342
https://qiita.com/komlabo/items/3f14c8990a2f94fb5323
343
344
JavaScriptの"非同期処理"を理解する(Promise/async/await)
345
https://qiita.com/kkrtech/items/4680c624012bd265714f