var a=function(){
var b=function(){
alert(b._a)//还在关联
}
b()//undefined
return b
}
var aa=new a
aa._a="aaa"
aa()//好像在aa的作用域中 存在一个b ,弹出aaa
var b=function(){
alert(b._a)//还在关联
}
b()//undefined
return b
}
var aa=new a
aa._a="aaa"
aa()//好像在aa的作用域中 存在一个b ,弹出aaa
var a=function(){//a是一个Funtion对象.他的方法返回值也是一个Function对象
/*代码块开始*/
var b=function(){ //注意var,他新建了一个变量.并指向一个新的地址;
alert(b._a)
}
/*代码块结束*/
b()//undefined
return b
}
var aa=new a//aa获得一个返回值指针指向新个新建的代码块
var bb=new a//bb获得一个返回值指针指向新个新建的代码块
//注意:他们是不同的指向.因为在a中每次都是新建的代码块地址
aa._a="aaa"//将aa对应地址上新增一属性
aa()//aaa
bb()//undefined
var b=function(){
alert(b._a)//还在关联
}
var aa=b
aa._a="aaa"
aa()//好像在aa的作用域中 存在一个b ,弹出aaa
b._a="bbb"
aa()
</script>
你的var aa=b
其实是将aa指向b
也就是aa和b的实际地址是一样的.而且var b=function(){ }
是直接新建一个固定的Function对象了.
也就是b是一直指向Function的.
而不向LZ中的.b只是方法中的一个临时变量.感觉学过C/C++的会比较好理解吧.
但他返回了b(一个function)
这个就跟没有new一样了
即var aa=a()