注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

骇客归来

ぁ枫あ

 
 
 

日志

 
 

利用prototype.js创建面对对象js程序  

2007-03-08 16:53:53|  分类: Javascript |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

利用prototype.js创建面对对象js程序
1.首先我们来将创建一个类的方法:
var haiker = {
 name: 'haiker',
 version: '2.0',
 describe: 'haiker first javascript',
 sayHello: function() {alert('hello,this is the first js pro')}
}
如上代码就创建了一个名为haiker的类,他有些静态属性和方法,可以直接通过 haiker.name或haiker.sayHello()来调用。

2.如果为类创建实例方法和变量呢,方法如下:
var Person = function(name) {//有点类似构造函数
 this.name = name;
}
Person.prototype = {
 sayHello: function() {
  alert('I am ' + this.name);
 }
}
利用了prototype,注意这里的prototype可不是那个框架哟,这个是js自己的东西,叫什么我也说不上来,记住这样用就行了^_^
然后创建Person类的实例,使用如下方法:
 var objPerson = new Person('haiker');
    调用 new 时, 将会创建一个新对象,并且调用 Person 方法

 这样就可以通过 objPerson.sayHello();来调用实例方法了
 为什么会是这样的呢,上面那个this是什么意思呢,请看:Person.prototype 中的成员 将会被 new 操作符添加到新产生的对象中
 新产生的对象就用this来引用的。

3.接下来我们来讲继承:
 什么是继承,我也说不上来,反正你爸爸有的东西你也会有的,就这样。
 假如有一个类A,它有一个sayHello()方法,代码如下:
 var A = function() {
 }
 A.prototype = {
  sayHello: function() {
   alert('sayHello A');
  }
 }
 
 我想创建一个B类,让他继承A,其实就是这样
 var b = new B();
 b.sayHello();
 
 这就是继承的第一层含义(重用)
 另外还有多态的问题。
 想想我们应该怎样为类添加实例方法吧,对,用prototype
 到现在为止,我们需要用到prototype.js框架了。
 来看看他是怎么扩展的
 Object.extend = function(desctination, source) {
  for(var property in source) {
   desctination[property] = source[property];
  }
  return desctination;
 }
 就这样就简单的把source的成员copy到了desctination
 怎么,是不是看起来有点老火,没关系,看代码好了
 var A = function() {
 }
 A.prototype = {
  sayHello: function() {
   alert('sayHello A');
  }
 }
 
 var B = function() {
 }
 
 Object.extend(B.prototype, A.prototype);//先添加父类A的成员
 Object.extend(B.prototype, {//再添加B类的成员,如果是同名,则覆盖,行为符合多态
  sayHi:function() {
   alert('sayHi B');
  } 
 });
 好了,到这里我们该请出我们的主打人物prototype上场了
 利用原型创建类:
  首先看看Class类的create()方法:
  var
    create: function() {   
      return function() { 
        this.initialize.apply(this, arguments);   
      }   
    }    
  }  
  接下来我们来创建一个类
  var ClassName = Class.create();
  Object.extend(ClassName.prototype,{
   initialize: function(){}//这就相当于构造函数
   //以下还可以添加其他实例方法
  });
  上面就是使用prototype创建类的一般格式
  如果我们要继承一个类,只要使用以下代码
  var ClassName = Class.create();
  Object.extend(ClassName.prototype, SuperClassName.prototype);
  Object.extentd(ClassName.prototype,{
   initialize:function(){}
   //..
  });
以上就是基本的面向对象内容
语文不好,写得没点逻辑,看不懂可以在线交流,QQ:8540791,MSN:everhow#sina.com

  评论这张
 
阅读(250)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017