Javascript ちょっとしたtips
- 作者: Stoyan Stefanov
- 出版社/メーカー: Oreilly & Associates Inc
- 発売日: 2010/09/28
- メディア: ペーパーバック
- 購入: 2人 クリック: 73回
- この商品を含むブログ (6件) を見る
今、↑この本を読んでいます。半分くらい読んだので前半の「ふーん」と思ったことをまとめます。
繰り返しはカウントアップよりカウントダウンの方がスマートに書ける
var ary = ["a", "b", "c"], len = ary.lenght; for (var i = 0; i < len; i++) { // some code }
上記サンプルはカウントアップ。下記はカウントダウン。
var ary = ["a", "b", "c"]; for (var i = ary.len; i--;) { // some code }
while文で同じことやる場合は↓
var ary = ["a", "b", "c"], i = ary.length; while (i--) { // some code }
functionの中のthisについて
function Sample() { this.name = "what is this?"; }
↑Sampleを「Sample()」のように実行する場合と、newを使ってオブジェクト生成するときに実行される場合とではthisが指しているものが違う。
new Sample()
まずnewを使った時に実行されるとき。
var a = new Sample(); console.log(a.name) // "sample!" → this = a
thisはaを指している。
【解決策】thatを使う
function Sample() { var that = {}; that.name = "aaa"; return that; }
newをつけ忘れた場合でも同じ結果が得られる。
var first = new Sample(), second = Sample(); console.log(first.name); // 'aaa' console.log(second.name); // 'aaa'
Functionの中でFunctionを再定義
「最初の1回だけ別の動作をしたい」というときには、下記のようにfunctionの中でfunctionを再定義する。
function Sample() { console.log("first time"); Sample = function () { console.log("not first time"); } } console.log(Sample()); // first time console.log(Sample()); // not first time
オブジェクトの定義
「undefined」の時だけ新しくオブジェクトを作りたい場合は下記のようにする。
var obj = obj || {};
意外と多くなりそうなので今回はこのへんでー