论坛首页 Web前端技术论坛

一个困惑我的js问题

浏览 4130 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-12-10  
function class1(); {
   this.func1 = function(); {
      alert('func1');;
   }
   var class2 = new function(); {
      this.func2 = function(); {
         // how to call the func1
     }
   }
}


如何让func2来调用func1呢?
   发表时间:2005-12-10  
我也很想知道js中为何需要这种java中的 private inner class

我时常提醒自己不要用java的思维写js!

但我还是用java的逻辑来说明我的意见:
如果你的本意是想让 func1 成为一个子类class2可以调用的方法,那么最好是把 func1 定义为 class1 的私有类方法,如下:

function class1(); {
   var func1 = function(); {
      alert('func1');;
   }
   this.class2 = function(); {
	  this.func2 = function(); {
		func1();;
     }
   }
}
0 请登录后投票
   发表时间:2005-12-11  
function class1(); { 
   this.func1 = function(); { 
      alert('func1');; 
   }
   var _currentInstance = this;
   var class2 = new function(); { 
      this.func2 = function(); { 
         // how to call the func1 
        _currentInstance.func1();;
     } 
   } 
}
0 请登录后投票
   发表时间:2005-12-11  
一般象楼上那样,总是给一个自定义的class中将this赋值给一个变量来获得该class的引用。
另外,我还喜欢总是给定义的方法设置默认名称:
function class1(); {
   this.func1 = function _func1(); {
      alert('func1');;
   }
   var class2 = new function(); {
      this.func2 = function(); {
         // how to call the func1
        _func1();;
     }
   }
}

这样有两个好处,第一是调用方便,内部使用,第二是避免所有方法都是匿名方法,在跟踪的时候会方便很多(使用valueOf的效果不同)。
0 请登录后投票
   发表时间:2005-12-11  
醒来 写道
我也很想知道js中为何需要这种java中的 private inner class

我时常提醒自己不要用java的思维写js!



谢谢大家提供了这么多思路,采用这种方法是因为class2要作为参数进行传递,
完成相应事件处理。
0 请登录后投票
   发表时间:2005-12-11  
swing 写道
一般象楼上那样,总是给一个自定义的class中将this赋值给一个变量来获得该class的引用。
另外,我还喜欢总是给定义的方法设置默认名称:
function class1(); {
   this.func1 = function _func1(); {
      alert('func1');;
   }
   var class2 = new function(); {
      this.func2 = function(); {
         // how to call the func1
        _func1();;
     }
   }
}

这样有两个好处,第一是调用方便,内部使用,第二是避免所有方法都是匿名方法,在跟踪的时候会方便很多(使用valueOf的效果不同)。


你这种方式没有普遍适用性,假如 func1 中有关于 this 操作,显然就出问题了,如下所示:
function class1(); {
   this.name = "class1_name";
   this.func1 = function _func1(); {
      alert(this.name);;
   }
   var class2 = new function(); {
      this.func2 = function(); {
         // how to call the func1
        _func1();;
     }
   }
}
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics