function foo(){
console.log(this.a);
}
var obj = {
a: 2,
foo: foo
}
var a = 'I am global'; //全局对象的属性
function doFoo(fn){
// fn实际上引用的是foo 尽管代码显示传进来是obj.foo,但实际上,执行的是foo函数的本身
// 这是一种参数传递的 Function 调用
fn(); // <---调用位置
}
doFoo(obj.foo); // I am global
// 内置的函数也有参数传递特性
setTimeout( obj.foo, 100 ); // I am global
function foo() { console.log(this.a) }
var a = 2;
var o = { a: 3, foo: foo };
var p = { a: 4 };
o.foo(); // 3
(p.foo = o.foo)(); // 2
function foo(){
console.log(this.a);
}
var obj = {
a: 2,
foo: foo
};
obj.foo(); // 2
function foo() {
console.log( this.a );
}
var obj2 = {
a: 42,
foo: foo
};
var obj1 = {
a: 2,
obj2: obj2
};
obj1.obj2.foo(); // 42
function foo(a) {
this.a = a;
}
var bar = new foo(2);
console.log(bar.a); //2
function foo(){
console.log(this.a);
}
var obj = {
a : 2
};
foo.call(obj); // 2
// 通过 foo.call(..),可以在调用 foo 时强制把它的 this 绑定到 obj 上
function foo(something){
console.log(this.a, something);
return this.a + something;
}
var obj = {
a : 2
};
var bar = foo.bind(obj);
var b = bar(3); // 2 3
console.log(b); // 5