lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6746|回复: 3
打印 上一主题 下一主题

js this 的问题

[复制链接]

6

主题

0

好友

86

积分

士兵

Rank: 1

跳转到指定楼层
楼主
发表于 2015-5-14 12:59:15 |只看该作者 |倒序浏览
<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style type="text/css">
          canvas{border: 1px solid red;}
        </style>
</head>
<body>
        <canvas id="canvas" width="400" height="400"></canvas>
        <script type="text/javascript">


           var myObject = function(){
                    var _self = this;
                    _self.config = {
                            cvs:null,
                            ctx:null,
                            cW:0,
                            cH:0
                    };
           };
           myObject.prototype = {
                           
                            init:function(){
                                    var _self = this;
                                    _self.config.cvs = document.getElementById("canvas");
                                    _self.config.ctx = _self.config.cvs.getContext("2d");
                                    _self.config.cW = _self.config.cvs.width;
                                    _self.config.cH = _self.config.cvs.height;
                                    _self.testFun();
                                    _self.utilEvent();
                            },
                            utilEvent:function(){
                                    var _self = this;
                            _self.config.cvs.addEventListener("touchmove", _self.touchMove.bind(this),false);
                            },
                            touchMove:function(e){
                                    e.preventDefault();
                            e = e.touches[0];
                            console.log("t1",this);
                            myObject.call(this);
                            var _self = this;
                            console.log("touchStart:",_self.config.cW);
                            },
                            testFun:function(){
                                    var _self = this;
                                    console.log("testFun:",_self.config.cW);
                            }
                    };
                    var _obj = new myObject();
                    _obj.init();
        </script>
</body>
</html>


我知道this 指向变了,可是我用了call 方法,但是 得到的结果 为什么一个是 400,一个是 0,麻烦大神指点一二,多谢









回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

沙发
发表于 2015-5-14 15:14:42 |只看该作者
既然知道改变了this的指向
那么每次myObject.call(this);之后this都是一个新对象,新对象的config.cW的初始值自然就是0了
不回答与技术和引擎不相关的问题
回复

使用道具 举报

6

主题

0

好友

86

积分

士兵

Rank: 1

板凳
发表于 2015-5-15 15:13:15 |只看该作者
lufy 发表于 2015-5-14 15:14
既然知道改变了this的指向
那么每次myObject.call(this);之后this都是一个新对象,新对象的config.cW的初始 ...

那我想把这个this 传递下去,除了用 _self.touchMove.bind(this),那有其他的方法吗?
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

地板
发表于 2015-5-16 07:18:05 |只看该作者
xiangfeng_su 发表于 2015-5-15 15:13
那我想把这个this 传递下去,除了用 _self.touchMove.bind(this),那有其他的方法吗? ...
  1. function(){
  2.     _self.touchMove();
  3. }
复制代码
不回答与技术和引擎不相关的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-5-9 06:47 , Processed in 0.045928 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部