js调用对象中的方法

JavaScript010

js调用对象中的方法,第1张

var o = {a:"abc",b:{c:function(param){alert(this.a)//这里的this指向的不是o而是b,所以this是没有a属性的,这里应该弹出undefinedalert(param) }},d:function(){this.b.c.call(this,'dddd')//这样就行了,就可以改变this的指向为d的this}}

用Function.prototype.bind即可

比如this.ele.addEventListener('touchstart', this.selectmouse.bind(this))

定义在Dumplings.prototype里的函数如果作为Dumplings实例的方法调用,其this指针会指向Dumpling实例。

但作为参数传递给其他函数(比如addEventListener)时其this指针会被重置,由addEventListener控制。

你需要在prototype里的函数里调用其它同级的函数,this就应当指向Dumplings实例,用this.ele来绑定事件和访问事件的对象,这样才能通过this来访问其他同级对象。为防止addEventListener改变this的指向,需要用bind固定下来。

var a = {

      s : document.getElementById('content'), //这里不为空

         ss : {

             s:this.s, //这里的this为window对象,并不是a对象

                 dd:function(){

                      alert('SS.s='+this.s) //这里的this是ss对象,并不是a

                      //return this.s

                 }

          }

      }