边城愚人

如果我不在边城,我一定是在前往边城的路上。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  30 随笔 :: 0 文章 :: 63 评论 :: 0 Trackbacks

2007年4月8日 #

    实现JavaScript继承的最简单的方式是call方法(或者apply方法)及原型链方法,但这两种方法都有缺陷,而其混合体就是很好的继承实现方式。下面举例说明:
function Animal(age){
    
this.age = age;
}

Animal.prototype.sayAge 
= function(){
    window.alert(
"My age is "+this.age+"!");
};

function Dog(age,name){
    Animal.call(
this,age);
    
this.name = name;
}
Dog.prototype 
= new Animal();
Dog.prototype.sayName 
= function(){
    window.alert(
"I am a "+this.name+"!");
};

var dog = new Dog(15,"dog");
dog.sayName();
dog.sayAge();
    对于类Animal来说,它有一个字段属性age及函数属性sayAge,sayAge方法的定义采用的是原型方式。Dog类要继承Animal,其字段属性除了age外还有name,通过Animal.call(this,age);可以实现Dog继承Animal的字段属性age并将其初始化了。call方法的第一个参数为继承的类的this指针,第二个参数为Animal类的构造函数的参数。实际上,只是通过call方法就可以实现继承,但唯一的要求是父类的函数属性要在构造函数中定义,这对于这里的函数属性使用原型方式定义来说就不适合了(采用原型方式定义函数属性比在构造函数内定义更直观一些)。要想继承Animal的原型方式定义的函数属性,需要的语句就是“Dog.prototype = new Animal();”。而Dog类中的sayName()函数则是其自身的函数属性了。
    除了这个最经典的实现继承的方式外,目前还有一些免费的库可供使用。但想到形形色色的库,头就大了,有时间有必要时再研究吧!
posted @ 2007-04-08 21:11 kafka0102 阅读(1174) | 评论 (0)编辑 收藏

     摘要: 最近在阅读《JavaScript高级程序设计》,未免遗忘读过的内容,就打算以博客的形式做些读书笔记。今天介绍的是JavaScript的三种构造对象的方法,除了这三种方法,还有工厂方法来构造对象,但考虑到其简单性及非正规性,这里就不做介绍。和Java这样的面向对象语言相比,JavaScript更像是函数式语言,其并没有类的概念,盖之以对象定义的概念,而具体创建的对象叫做对象的实例。  阅读全文
posted @ 2007-04-08 11:24 kafka0102 阅读(1598) | 评论 (4)编辑 收藏