var person = { functionA : function (){ this.functionBase(); }, functionBase : function(){ } };
<script> $("#abcf").click(person.functionA); </script>
这时functionA中的this是"#abcf"元素, 怎么样让this为person对象
改成这样可行不?
var person = { functionA : function (){ person.functionBase(); }, functionBase : function(){ alert('hello world'); } };
恩, 这样改可以用了。 谢谢了。
不过还有点想不通为什么将this提取出来不行:
var person = { _this : this, functionA : function (){ _this.functionBase(); }, functionBase : function(){ } };
@纯、粹: 貌似this不是固定的,看当前的对象是谁,this就指向谁
<html> <head> <script> var f = function(){ alert(this.name); } var obj1 = {name:'Joey'}; var obj2 = {name:'Ross'}; </script> </head> <body> <script> obj1.sayName = f; obj1.sayName();//Joey obj2.sayName = f; obj2.sayName();//Ross </script> </body> </html>
1 var person = { 2 functionA : function (){ 3 functionBase(); 4 }, 5 functionBase : function(){ 6 alert('hello world'); 7 } 8 }; 9 //这样行不行呢
http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html这有一个挺好的,教你怎么封装js对象的,可以学习学习
1楼的第一个方法有点取巧吧,把person当全局 变量,当然在哪里都好用。
$("#abcf").click( $.proxy(person.functionA, person) );
作用域跟上下文这两个概念搞清楚就可以了.可以去看看汤姆大叔的博客,上面写的很清楚.
$("#abcf").click(person.functionA.call(person)); call 和 apply 的调用
$("#abcf").click(person.functionA.call(person));