{{tag>book}}
====== Speaking JavaScript ======
15 26 47 54 81 100
''node''で対話実行しながら学ぶ。
話題があまりに細かい内容なので実際動かして学べない。またいつか戻ってこよう…。
===== 1 javascript quick start =====
* primitive型とオブジェクト型。primitive型はプロパティを変更できず、オブジェクトは変更できる。
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"
* ''typeof'': 型を判別する。
* ''typeof null # => object #これはバグらしい''
* メソッドだけ抜き出すと変数は保持されない。
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