关于js模拟面向对象借口中this指向的问题

来源:互联网 发布:linux清除arp表 编辑:程序博客网 时间:2024/06/06 00:23

我们知道匿名函数指向的是window

但是如果我们想模拟面向对象的借口呢

那我们在函数中调用函数中声明的变量如何做?

这样?~

var a=123

function demo(){
var a=11
return function(){
alert(this) //this指向window
return this.a
}

}

demo()() //最终出来的结果是123 ,很遗憾!

下面是改正的方法!

var a=123
function demo(){
var a=11
this.aa=function(){//而我们在这为匿名函数绑定了一个this.aa方法模拟对象调用
alert(this) //而this现在指向的是object了! 为毛?往下看

return a
}
}


var d=new demo(); //原因在这因为这个匿名函数在没有被任何对象调用时 默认指向window,而我们声明这个对象后赋值给b
alert(d.aa()) //等于为this绑定了这个名字为d的调用方法,this所以就变成指向demo()了