目次

Speaking JavaScript

15 26 47 54 81 100

nodeで対話実行しながら学ぶ。

話題があまりに細かい内容なので実際動かして学べない。またいつか戻ってこよう…。

1 javascript quick start

primitiveは値で比較し、オブジェクトは参照で比較する。

var obj0 = {};
var obj1 = {};
obj0 === obj1 # => false
obj0 === obj0 # => true
var prim1 = 123;
var prim2 = 123;
prim1 === prim2 # => true

また、

obj = {}
obj.str = "a"
obj.str # => "a"
str.foo = "a"
str.foo # => "undefined"
var jane = {
  name: 'Jane',
  describe: function() {
  return 'Person named '+this.name;
  }
};
 
jane.description() # => Person named Jane
func = jane.description
func() # => Cannot read property 'name' of undefined

そういうときbindを使う。

var jane = {

  name: 'Jane',
  friends: [ 'Tarzan', 'Cheeta' ],
  logHiToFriends: function() {
  'use strict';
  this.friends.forEach(function (friend){
  console.log(this.name+' says hi to '+friend);
  });
  }

}

2 background

JavaScriptには明るい未来が待っていますと。

3 JavaScriptの本質

言語の特徴、影響を受けた言語など。Wikipediaの内容みたい。

4 どうやって作られたか

いろいろあってスーパーエンジニアがプロトタイプを10日で作った。 名前もいろいろあって変わりまくって結局JavaScriptという紛らわしい名前に。

5 標準化

ECMAScript

6 マイルストーン

歴史上はじめてのAjaxなアプリはGoogle Map。そこから派生した。

7 JavaScriptの文法

まあ、いろいろあるんですね…。

strictモードの動きとかもある。

8 値

型とか。

細かい!nullの歴史とか飛ばす。

適当に読んだら最後らへん意味不明。 ??

> var n = { valueOf: function () { return 123} };
> Number(n)
123
> String(n)
'[object Object]'

??

> var s = { toString: function () { return '7'; } };
> String(s)
'7'
> Number(s)
7

9 オペレータ

ほとんどのオペレータはprimitive value でしか働かない。 + とかそうだな。

複合オペレータ。+=とか。

== の挙動。変換されてから比較される。 たとえば

> '' == false // 0 === 0
true
> '' == true // 1 === 1
true