javascript 写类方式之六

 更新时间:2009年07月05日 01:43:11   作者:  
这篇开始会分析流行的js库之写类方式。各种库的写类方式虽然千奇百怪,但仍然逃离不了本质---用构造函数和原型 来组装类。
6、Prototype.js的写类方式
复制代码 代码如下:

//prototype.js中的代码
var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments);
}
}
}
//简化后的
function Clazz() {
return function(){
this.initialize.apply(this,arguments);
}
}

如下步骤写一个类,
复制代码 代码如下:

//类名Person
var Person = Class.create();

//通过原型重写来定义Person
Person.prototype = {
initialize : function(name) {
this.name = name;
},
getName : function() {
return this.name;
},
setName : function(name) {
this.name = name;
}
}

//创建对象
var p = new Person("jack");
console.log(p.constructor == Person);//false

initialize完成对象的初始化(相当于构造函数),方法依次往下写即可。



有个问题,通过这句p.constructor == Person为false可以看到,这正是Prototype.js一个小小的缺陷。原因是重写了Person的原型。为了使constructor能指向正确的构造器,只需在原型重写时维护好constructor属性即可。
复制代码 代码如下:

Person.prototype = {
constructor : Person,//注意这里
initialize : function(name) {
this.name = name;
},
getName : function() {
return this.name;
},
setName : function(name) {
this.name = name;
}
}

好了,这时候p.constructor == Person就是true了。

相关文章

  • 不错的JavaScript面向对象的简单入门介绍

    不错的JavaScript面向对象的简单入门介绍

    JavaScript是一门OOP,而有些人说,JavaScript是基于对象的。
    2008-07-07
  • JavaScript 继承使用分析

    JavaScript 继承使用分析

    继承,通俗地说,之前你写过一些类,这些类中有一些是而你现在要写的类的功能的子集或者基本相同,那么你不用完全重新写一个新的类,你可以把之前写的类拿过来使用.这样的一种代码重用过程就叫做继承
    2011-05-05
  • JavaScript 原型继承

    JavaScript 原型继承

    JavaScript 原型继承,学习js面向对象的朋友可以看看。
    2011-12-12
  • JavaScript 常见对象类创建代码与优缺点分析

    JavaScript 常见对象类创建代码与优缺点分析

    这几种javascript类定义方式中,最常用的是杂合prototype/constructor 和 动态prototype方式。
    2009-12-12
  • Javascript 面向对象编程(coolshell)

    Javascript 面向对象编程(coolshell)

    Javascript是一个类C的语言,他的面向对象的东西相对于C++/Java比较奇怪,但是其的确相当的强大,在 Todd 同学的“对象的消息模型”一文中我们已经可以看到一些端倪了
    2012-03-03
  • JavaScript 继承详解(二)

    JavaScript 继承详解(二)

    这一章我们将会重点介绍JavaScript中几个重要的属性(this、constructor、prototype), 这些属性对于我们理解如何实现JavaScript中的类和继承起着至关重要的作用。
    2009-07-07
  • JObj预览一个JS的框架

    JObj预览一个JS的框架

    我说过,我要写一个JS的框架,我知道有人会从心底BS我,但是:你继续BS吧!我还是要写我的JOBJ。
    2008-03-03
  • JavaScript类和继承 prototype属性

    JavaScript类和继承 prototype属性

    本文介绍了JavaScript里面的prototype属性。这个属性是理解JavaScript类和继承的重要基础。
    2010-09-09
  • JavaScript中的面向对象介绍

    JavaScript中的面向对象介绍

    在JavaScript,可以说everything is object,那么什么是对象?对象就是包含一组变量和函数的集合。在其它面向对象语言中对象是由类的实例化而来,JavaScript是基于原型的面向对象语言,没有类的概念,对象派生自现有对象的副本
    2012-06-06
  • javascript 面向对象思想 附源码

    javascript 面向对象思想 附源码

    javascript 面向对象思想实例代码,大家可以参考下。
    2009-07-07

最新评论