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

javascript写类方式之一

阅读更多

从这篇起,会由浅到深的分析js OO之写类方式,大概会有5-8篇。后面陆续会分析流行库(框架)的写类方式。为了讨论的单一性,暂不考虑类的继承,(私有,受保护)属性或方法。

 

EMCA262规范中没有类(class)的概念,js的new只是让他看起来更像c++,java一点。这里说的写类,只是书写js代码风格而已。

 

1、构造函数方式

 

/**
 * Person类:定义一个人,有个属性name,和一个getName方法
 * @param {String} name
 */
function Person(name) {
	this.name = name;
	this.getName = function() {
		return this.name;
	}
}

 

这种风格让我们这些写过java的有点亲切在于构造一个对象需要配置一些参数,参数要赋值给类里面this。但与java的区别是js用function来定义类,参数也无需定义类型。

 

类写好了,我们造几个对象:

 

var p1 = new Person("Jack");
var p2 = new Person("Tom");
console.log(p1 instanceof Person);//true
console.log(p2 instanceof Person);//true
 

控制台输出也证明了p1,p2的确是类Person的对象实例。

这种方式的优点是:可以根据参数来构造不同的对象实例缺点是构造时每个实例对象都会生成getName方法版本,造成了内存的浪费

 

当然经验丰富的程序员用一个外部函数来代替类方法,达到了每个对象共享同一个方法。改写后的类如下:

 

//外部函数
function getName() {
	return this.name;
}

function Person(name) {
	this.name = name;
	this.getName = getName;//注意这里
}

 

呵呵,有人可能觉得代码风格有点差强人意,怎么看也没有java那么紧凑。但的确可以减少内存的消耗。

 

 

 

 

 

 

 

1
0
分享到:
评论
2 楼 thysky 2009-06-27  
# function Person(name) { 
#     var _name = name; 
#     this.getName = function() { 
#         return _name; 
#     }
#     this.setName = function(name) {
#         _name = name;
#     }
# } 

这样_name是私有属性。

如果按照你的写法,this.name是可以访问到name属性的。
1 楼 lucane 2009-06-27  
模仿的再像点
属性变私有

相关推荐

    javascript 写类方式之一

    JavaScript,作为一种动态类型的脚本语言,虽然在ECMAScript 262规范中并没有像Java或C++那样的“类”概念,但是它提供了多种模拟面向对象编程的方式。在这个系列的第一部分,我们将探讨JavaScript中创建类的最基本...

    javascript写类方式之六

    本文将深入探讨“javascript写类方式之六”,并结合标签“源码”和“工具”,解析其中的原理与实践。 在JavaScript ES5之前,我们通常使用函数构造器(Function Constructor)和原型链(Prototype Chain)来模拟类...

    javascript写类方式之七

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

    javascript写类方式之九

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

    javascript 写类方式之十

    ### JavaScript 写类方式之十 #### mootools.js的版本与设计思想 mootools.js是一个轻量级的JavaScript框架,它支持模块化和面向对象编程。在本篇文章中,我们了解到mootools.js的最新版本是1.2.3,但实际例子使用...

    javascript 写类方式之四

    同一构造函数将组装出同一类型通过前面几篇得知javascript写类无非基于构造函数 和原型 。既然这样,我们写个工具函数来写类。 代码如下:/** * $class 写类工具函数之一 * @param {Object} constructor * @param {...

    javascript 写类方式之五

    在给定的文件中,所描述的“用构造函数+原型定义一个类”是一种常见的JavaScript中模拟类的方式。 首先,让我们探讨构造函数。构造函数是一种特殊类型的函数,用于在创建新对象时初始化它。在JavaScript中,任何...

    javascript 写类方式之六

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

    javascript 写类方式之七

    在深入探讨JavaScript中使用Dojo框架定义类的方式之七之前,首先需要注意的是,本文介绍的仅限于如何在JavaScript中使用Dojo框架定义一个类,而不包括继承的讨论。Dojo是一个成熟的JavaScript框架,它提供了一系列的...

    javascript 写类方式之二

    ### JavaScript 类实现方式:原型方式 在 JavaScript 中,面向对象编程的一个重要方面是类的实现。不同于传统的类式语言如 Java 或 C++,JavaScript 采用了基于原型的继承模型。这使得 JavaScript 在处理类和对象时...

    javascript 写类方式之三

    JavaScript,作为一种动态类型的语言,没有像Java那样的传统类机制,但它提供了多种模拟类概念的方式。在JavaScript中,我们可以使用构造函数、原型以及组合这两种方法来实现面向对象编程。本文将详细探讨这种“第三...

    javascript 写类方式之八

    首先,`Ext.extend`方法是Ext.js的核心功能之一,它用于构建复杂的组件系统。在`Ext.core`版本3.0中,这个方法被用来创建和扩展类,例如创建Panel、MessageBox等UI组件。`Ext.extend`允许我们在已有的类基础上添加新...

    javascript 写类方式之九

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

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

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

Global site tag (gtag.js) - Google Analytics