function setObj(p) {
p.name="AA";
p={};
p.name="BB"
}
var p={
name:'CC'
}
setObj(p);
console.log(p);
程序的执行结果是AA
// 匿名函数的this一般是指向window
var number=2;
var obj={
number:4,
fn1:(function(){
this.number*=2;
number*=2;
var number=3;
return function(){
this.number*=2;
number*=3;
console.log(number);
}
})()
}
var fn1=obj.fn1;
console.log(number); //匿名函数调用后会立刻执行,匿名函数中的this指向的是window //4
fn1(); //9
obj.fn1(); //27
console.log(number); //8
console.log(obj.number); //8
//只要函数内有局部变量,就不用全局的
//只要函数的闭包中有变量,就不用全局的
//所有不带this.前缀的,都在函数作用域或者闭包中查找
//匿名函数自调和普通函数调用时的this,都默认指向window
var name='a';
var object={
name:'b',
getNameFunc:function(){
return function(){
return this.name;
}
}
}
alert(object.getNameFunc()()); // 'a'
object.getNameFunc()调用后得到的是
function(){
return this.name;
}
var name='a';
var object={
name:'b',
getNameFunc:function(){
var that=this;
return function(){
return that.name;
}
}
}
alert(object.getNameFunc()()); //b that是 object
//是闭包 that