4-20
// self() 함수
var self = function () {
console.log('a');
return function () {
console.log('b');
}
}
self = self();
self();
a
b
익명함수1 안에 'a' 가 있고 그 안에 'b'를 담고 있는 익명함수2가 있다.
처음 self 함수를 호출했을땐 a가 출력되지만 다시 self 함수 변수에 self() 함수 호출 리턴값으로 내보낸 함수가 저장된다.
4-21
function func(arg1, arg2) {
console.log(arg1, arg2);
}
func();
func(1);
func(1,2);
func(1,2,3);
1 undefined
1 2
1 2
자바스크립트의 자유로운 문법성을 볼 수 있다.
함수의 인자보다 적게 함수를 호출하면 undefined, 많게 호출하면 무시된다.
4-23
var my = {
name : 'foo',
sayName : function() {
console.log(this.name);
}
};
var other = {
name : 'bar'
};
other.sayName = my.sayName;
my.sayName();
other.sayName();
foo
bar
this는 자신을 호출한 객체에 바인딩 된다. (foo)
4-28
var Person = function(name) {
this.name = name;
};
var foo = new Person('foo');
console.log(foo.name);
foo