易截截图软件、单文件、免安装、纯绿色、仅160KB

Javascript 面向对象机制的实现

Javascript 面向对象机制的实现
自定义类的实现方法很多,重点谈两种。
构造函数法
function Player(url){
    this.url = url;
   
    this.showUrl = function(){
        alert(this.url);
    }
   
    this.play = function(){
        // do play
    }
}
var myPlayer = new Player("test.mp3");
myPlayer.showUrl();
alert(myPlayer instanceof Player);
优点:类被封装成一个整体 声明实例用new运算符
缺点:对象的方法会重复生成
function Player(url){
   this.url = url;
   if(typeof Player._initialized == "undefined"){
      Player.prototype.showUrl = function(){
         alert(this.url);
         Player._initialized = true;
      }
   }
}
var myPlayer = new Player("test.mp3");
myPlayer.showUrl();
alert(myPlayer instanceof Player);
优点:避免了函数的重复创建
缺点:麻烦一点
访问权限
JavaScript 本身并没法区分私有变量和公共变量,通常在命名上区分一下,一般习惯在私有变量的前加一个下划线 this._privateProperty。
有var声明的局部变量可以当作私有变量,this引导的为共有对象。
事件
function Player(url){
   this.url = url;
   var self = this;
   var position;
   this.onPositionChange = null; // 事件定义
   this.setPosition = function(value){
      self.position = value;
      if (this.onPositionChange)
         this.onPositionChange(this); //事件触发
   }
}
   var myPlayer = new Player("test.mp3");
   myPlayer.onPositionChange = function fun(obj){ //事件订阅
   alert(obj.position + 's Position Change');
}
myPlayer.setPosition(100);
实例化


相关文档:

《悟透javascript》学习笔记:四、函数的魔力

引言
 
JavaScript的代码就只有 function 一种形式,function 就是函数的类型。也许其他编程语言还有 procedure 或 method 等代码概念,但在 JavaScript 里只有 function 一种形式。当我们写下一个函数的时候,只不过是建立了一个function类型的实体而已。
 
函数类型
 
1.    &n ......

《悟透javascript》学习笔记:六、放下对象

引言
 
再来看看function与object的超然结合吧。
 
    在面向对象的编程世界里,数据与代码的有机结合就构成了对象的概念。自从有了对象,编程世界就被划分成两部分,一个是对象内的世界,一个是对象外的世界。对象天生具有自私的一面,外面的世界未经允许是不可访问对象内部的。对象也有大 ......

javascript:history.go()和History.back()的区别收藏

<input   type=button   value=刷新   onclick="window.location.reload()">  
  <input   type=button   value=前进   onclick="window.history.go(1)">  
  <input   type=button   value=后退   onclick="window.history.go(-1)"> ......

javaScript的callee属性

      js的Function对象在调用过程中具有一个arguoments属性,它是由脚本解释器创建的,这也是创建arguments对象唯一途径。arguments对象可以看做是一个Array对象,它具有length属性,可以通过序号访问每一个参数。而且,通过arguments 的callee属性可以获取对只在执行的Function对象的引用,如下 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号