Javascript 设计模式——1.4 对象的易变性
来源:互联网 发布:有关大数据时代的论文 编辑:程序博客网 时间:2024/06/10 19:44
1.4 对象的易变性
在JavaScript中,一切都是对象(除了那三种原始数据类型。即便是这些类型,在必要的时候也会被自动包装为对象),而且所有对象都是易变的(mutable)。这意味着你能使用一些在大多数别的语言中不允许的技术,例如为函数添加属性:
这也意味着你可以对先前定义的类和实例化的对象进行修改:
在这个例子中,类的getGreeting方法是在已经创建了类的两个实例之后才添加的,但这两个实例仍然能获得这个方法,其原因在于prototype对象的工作机制。对象alice还得到了displayGreeting方法,而别的实例却没有。
与对象的易变性相关的还有内省(introspection)的概念。你可以在运行时检查对象所具有的属性和方法,还可以使用这种信息动态实例化类和执行其方法〔这种技术称为反射(reflection)〕,甚至不需要在开发时知道它们的名称。这些技术在动态脚本编程中发挥着重要作用,而静态语言(例如C++)则缺乏这样的特性。
本书中大多数用来模仿传统的面向对象特性的技术都依赖于对象的易变性和反射。如果你习惯使用C++或Java这类语言,可能会觉得这很奇怪,因为在那些语言中,不能对已经实例化的对象进行扩展,也不能对已经定义好的类进行修改。而在JavaScript中,任何东西都可以在运行时修改。这是一个强有力的工具,许多在别的语言中无法办到的事都能借助于它而办到。当然,这也有其不利之处。你可以定义一个具有一套方法的类,却不能肯定这些方法在以后总是完好如初。这是JavaScript中很少进行类型检查的原因之一。这个问题将在第2章讲述鸭式辨型(duck typing)和接口检查时进行探讨。
- Javascript 设计模式——1.4 对象的易变性
- Javascript 设计模式——1.3 函数是一等对象
- JavaScript面向对象设计二——构造函数模式
- javascript面向对象——几种常见的设计模式
- Javascript设计模式之一:面向对象的JavaScript
- 《JavaScript设计模式与开发实践》-面向对象的JavaScript
- 读书笔记--JavaScript设计模式:Constructor模式(创建对象的方法)
- javascript设计模式之new创建对象的安全模式
- JavaScript面向对象程序设计—创建对象的模式
- Javascript 设计模式——1.1 JavaScript的灵活性
- Javascript 设计模式——1.6 JavaScript中的设计模式
- 开篇—-面向对象的设计原则与设计模式
- GRASP模式——面向对象的基本设计模式
- 浅谈设计模式——对象的结构模式
- 浅谈设计模式——对象的行为模式
- 浅谈设计模式——对象的创建型模式
- PHP设计模式——无用的空对象模式
- Javascript设计模式-数据访问对象模式
- IEnumerable和IEnumerator接口
- Javascript 设计模式——1.3 函数是一等对象
- 程序员失业后怎么办
- 判断浏览器是关闭还是刷新
- linux库文件编写入门
- Javascript 设计模式——1.4 对象的易变性
- C语言位运算
- SPCOMM的方法
- 添加到收藏夹和设置首页代码
- 苦苦挣扎努力奋斗小菜鸟的故事
- 将 Windows IPC 应用程序移植到 Linux,第 2 部分: 信号量和事件
- C语言文件
- Javascript 设计模式——1.5 继承
- Linux initial RAM disk (initrd) overview