`
zhouyrt
  • 浏览: 1172643 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript写类方式之六

阅读更多

这篇开始会分析流行的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了。

 

 

 

 

  • a.rar (416 Bytes)
  • 下载次数: 11
0
0
分享到:
评论
2 楼 zhouyrt 2009-07-02  
恩,prototype.js的extend就是将对象属性和方法赋值给另一个对象。
1 楼 lixinlixin2008 2009-06-29  
感觉prototype这种对象创建挺怪异的...
继承也只是简单的属性对拷...
var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, arguments);
    }
  }
}

相关推荐

    javascript写类方式之七

    本文将探讨JavaScript中的七种创建类的方式,结合给定的标签和文件,我们主要关注源码解析和工具应用。 1. **函数构造器** JavaScript中最基础的类创建方式就是使用函数构造器。通过`function`关键字定义一个函数...

    javascript写类方式之九

    标题提到的"javascript写类方式之九"暗示了文章可能讨论了JavaScript中九种不同的类定义方法。在JavaScript ES6之前,我们通常使用函数构造器和原型链来模拟类的行为。随着ES6的引入,类语法被正式引入,使得代码...

    javascript 写类方式之六

    在了解JavaScript中类的写法时,我们可以从多个流行的JS库中汲取灵感。这些库虽然提供各自独特的语法和结构,但它们共同的核心是基于构造...理解不同写类方式的原理有助于我们更好地掌握JavaScript这门灵活多变的语言。

    javascript 写类方式之九

    在JavaScript编程中,类的创建和组织是一个重要的概念,特别是在大型项目中,为了保持代码的可维护性和可读性。本文将详细介绍YUI(Yahoo User Interface Library)2.7.0版本中的类定义方法,以及如何利用YUI提供的...

    李立超JavaScript基础篇笔记

    JavaScript有六种基本数据类型:String(字符串)、Number(数值)、Boolean(布尔值)、Null(空值)、Undefined(未定义)和Object(对象)。这些类型构成了JS编程的基础,理解和掌握它们是学习JavaScript的第一步...

    JavaScript权威指南(JavaScript犀牛书一本)

    《JavaScript权威指南》是JavaScript编程领域的一本经典之作,由著名技术作家David Flanagan撰写,被誉为"JavaScript犀牛书"。这本书深入浅出地讲解了JavaScript语言的核心概念、语法特性和高级特性,对于想要全面...

    javascript写出的时钟

    本示例中的“JavaScript写出的时钟”就是一个很好的实例,展示了如何利用JavaScript、HTML和CSS这三种技术来创建一个动态显示时间的模拟时钟。 首先,我们从HTML基础开始。HTML(超文本标记语言)是构建网页结构的...

    JavaScript内核系列 pdf

    ES6(ECMAScript 2015)引入了许多新特性,如箭头函数、模板字符串、类、解构赋值、模块导入等,大大提高了JavaScript的可读性和效率。了解并掌握这些新特性,可以使代码更加现代和高效。 十、性能优化与最佳实践 ...

    JavaScript写的树形展示

    一个简单的实现方式是创建一个JavaScript对象,其中包含节点的值、子节点数组和其他属性(如ID、父节点等)。 ```javascript function TreeNode(value) { this.value = value; this.children = []; } ``` 2. **...

    javaScript写的计算器

    8. **代码组织**:对于复杂的计算器,JavaScript代码可能会采用模块化或面向对象的编程方式,将各个功能封装在不同的函数或类中,提高代码的可读性和可维护性。 综上所述,JavaScript编写的计算器是一个集成了事件...

    Javascript效果封装类(都是国外高手写的)

    通过研究这些代码,开发者可以提升自己的JavaScript技能,了解如何写出高效、可维护的代码。 总的来说,这个压缩包里的资源是学习和提高JavaScript特效开发的宝贵资料。它们可以帮助开发者掌握如何使用JavaScript...

    JavaScript权威指南(第六版)mobi格式

    《JavaScript权威指南(第六版)》是一本深入探讨JavaScript编程语言的经典著作,旨在为开发者提供全面、详尽且准确的JavaScript知识。这本书以其严谨的结构和深入的技术解析,被誉为JavaScript学习者的必备参考书籍...

    javascript入门教程.docx

    - **区分大小写**:JavaScript是一种区分大小写的语言,这意味着`Variable`和`variable`会被视为两个不同的标识符。 - **注释**:单行注释使用`//`,多行注释则使用`/* ... */`。 ```javascript // This is a ...

    JavaScript经典进阶系列-Effective JavaScript英文原版

    《Effective JavaScript》是由David Herman编著的...通过《Effective JavaScript》,开发者不仅能深化对JavaScript语言的理解,还能学习到如何写出更专业、更具可维护性的代码,从而在JavaScript的进阶道路上更进一步。

    JavaScript基础教程(pdf版)

    此外,教程还会介绍JavaScript的最新版本ES6(ECMAScript 6)及以后的特性,如类和模块系统。类提供了面向对象编程的语法糖,而模块系统则解决了代码组织和重用的问题。理解这些新特性有助于写出更现代、更可维护的...

    深入理解JavaScript系列

    面向对象编程是现代软件开发的重要思想,这部分内容讲解了JavaScript中的类、对象、继承、构造函数等OOP概念,以及如何在ECMAScript环境中实现这些概念。 4. **设计模式之代理模式** 设计模式是解决常见编程问题...

    用javascript写的计算器,封装成对象了(带用例)

    在JavaScript编程中,将功能封装成对象是一种常见的代码组织方式,可以提高代码的复用性和可维护性。在这个场景中,我们讨论的是一个基于JavaScript实现的计算器,它已经被封装为一个对象,便于调用和使用。以下是这...

Global site tag (gtag.js) - Google Analytics