<script>
var testvar = 'window属性';
var o3 = {
testvar:'3',
testvar2:'3**',
fun:function(){
alert('o3: '+this.testvar);//问题一、结果是3,那这个this代表的是o3还是window?
inner = function(){
alert('o3-inner: '+this.testvar);//问题二、结果是'window属性',这里为什么是这个结果,3已经覆盖了全局的那个testvar了呀?
alert('o3-inner: '+this.testvar2);//问题三、结果是undefined(未定义),这个结果就更想不来原因了?
};
inner();
}
};
o3.fun(); var aa = function(){
testvar=3;
testvar2=4;
fn = function(){
alert('o3: '+this.testvar);
var inner = function(){
alert('o3-inner: '+this.testvar);
alert('o3-inner: '+this.testvar2);
};
inner();
}
}
var obj = new aa();
//obj.fn();问题四、这样不能调用,而用window就可以,为什么会这样?
window.fn();
</script>
var testvar = 'window属性';
var o3 = {
testvar:'3',
testvar2:'3**',
fun:function(){
alert('o3: '+this.testvar);//问题一、结果是3,那这个this代表的是o3还是window?
inner = function(){
alert('o3-inner: '+this.testvar);//问题二、结果是'window属性',这里为什么是这个结果,3已经覆盖了全局的那个testvar了呀?
alert('o3-inner: '+this.testvar2);//问题三、结果是undefined(未定义),这个结果就更想不来原因了?
};
inner();
}
};
o3.fun(); var aa = function(){
testvar=3;
testvar2=4;
fn = function(){
alert('o3: '+this.testvar);
var inner = function(){
alert('o3-inner: '+this.testvar);
alert('o3-inner: '+this.testvar2);
};
inner();
}
}
var obj = new aa();
//obj.fn();问题四、这样不能调用,而用window就可以,为什么会这样?
window.fn();
</script>
二. this是指window, this.testvar 是定义在头行的那个testvar
三. 原因同二, window下面并没有定义testvar2
四. 如果把fn明确指定为aa里的方法,
var aa = function(){
this.fn = function(){ ...
就可以用obj.fn()了
能帮小弟解释清楚点吗?
参见:http://topic.csdn.net/u/20091113/23/b46a1246-eadb-4c13-b5a3-5bc3a2c79201.html