首页 新闻 会员 周边

关于javascript自定义对象引用问题

0
悬赏园豆:20 [待解决问题]
var person = {
   functionA :  function (){
      this.functionBase();
},

   functionBase : function(){

}

};
<script>

   $("#abcf").click(person.functionA);

</script>

这时functionA中的this是"#abcf"元素, 怎么样让this为person对象

Kar)的主页 Kar) | 初学一级 | 园豆:134
提问于:2013-12-16 15:36
< >
分享
所有回答(6)
0

改成这样可行不?

               var person = {
                functionA : function (){
                        person.functionBase();
                    },
                    functionBase : function(){
                        alert('hello world');
                    }
            };
会长 | 园豆:12401 (专家六级) | 2013-12-16 15:44

恩, 这样改可以用了。 谢谢了。

不过还有点想不通为什么将this提取出来不行:

var person = {
   _this : this,

   functionA :  function (){
      _this.functionBase();
},

   functionBase : function(){

}

};

 

 

支持(0) 反对(0) Kar) | 园豆:134 (初学一级) | 2013-12-16 15:56

@纯、粹: 貌似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>

 

支持(0) 反对(0) 会长 | 园豆:12401 (专家六级) | 2013-12-16 16:11

1
var person = { 2 functionA : function (){ 3 functionBase(); 4 }, 5 functionBase : function(){ 6 alert('hello world'); 7 } 8 }; 9 //这样行不行呢

 

支持(0) 反对(0) ThreeTree | 园豆:1490 (小虾三级) | 2013-12-16 18:00
0

http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html这有一个挺好的,教你怎么封装js对象的,可以学习学习

拾梦小侠ด้้้ | 园豆:713 (小虾三级) | 2013-12-16 19:04
0

1楼的第一个方法有点取巧吧,把person当全局 变量,当然在哪里都好用。

angelshelter | 园豆:9887 (大侠五级) | 2013-12-17 17:32
0
$("#abcf").click( $.proxy(person.functionA, person) );

作用域跟上下文这两个概念搞清楚就可以了.可以去看看汤姆大叔的博客,上面写的很清楚.

果皮 | 园豆:202 (菜鸟二级) | 2013-12-18 23:30
0

$("#abcf").click(person.functionA.call(person));  call 和 apply 的调用

幻想飞鱼 | 园豆:203 (菜鸟二级) | 2013-12-24 15:23
0

$("#abcf").click(person.functionA.call(person)); 

乐享程序员 | 园豆:930 (小虾三级) | 2014-04-17 23:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册