此时,闭包中的this指向全局对象window,只能取到全局对象的属性。那么对象内部的属性(外部函数的变量)要想访问又怎么办呢? 把外部函数的this对象保存在一个闭包能访问的变量就可以了。看如下代码:
//代码清单7 <script type="text/javascript"> var name = "The window"; var obj = { name: "My Object", getNameFunc: function(){ var that = this; return function(){ return that.name; } } }; alert(obj.getNameFunc()()); //My object </script>
将外部函数的this赋值给that变量,就能读取到外部函数的变量。
6.2 不管是直接引用function,还是实例化一个function,其返回的闭包函数里的this都是指向window。
//代码清单8 <script type="text/javascript"> function a() { alert(this == window); var that = this; var func = function() { alert(this == window); alert(that); }; return func; } var b = a(); b(); //true, true, [object Window] var c = new a(); c(); //false, true, [object object] </script>
7、函数使用bind()方法绑定一个对象,this会指向传给bind()函数的值。
//代码清单9 <script type="text/javascript"> window.color = "red"; var obj = {color: "blue"}; function sayColor(){ alert(this.color); } var objSayColor = sayColor.bind(obj); objSayColor(); //blue </script>
8、内嵌在HTML元素中的脚本段,this指向元素本身
//代码清单10 <div>Click Me</div> <script type="text/javascript"> function test(obj) { alert(obj); //[object HTMLDivElement] } </script>
9、写在script标签中:this就是指全局对象window。这个跟第一点的全局函数调用的全局变量一样。
以上所述是小编给大家介绍的JavaScript中的this引用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章: