JavaScript的面向对象
2011-11-12 16:04
204 查看
JavaScript采用原型模式实现面向对象。原型的英文为Prototype,也意为雏形。雏形相比原型更好的说明了JavaScript的面向对象原理,因为雏形更能表明原始对象的不完整性。
原型模式在《设计模式》中有介绍,“明确一个实例作为要生成对象的原型,通过复制该实例来生成新的对象”。原型模式在静态语言(如C++)中的作用不太显著,但对于动态语言(如JavaScript)则是核心思想。通常在面向对象中,对象的原型就是类,从类生成对象是普遍的认同。但另一种观点认为,类不是必须的,对象不需要从类生成,而是复制已有的对象。JavaScript正是采用了这种思想。
需要新对象时,只需向对象添加属性。添加函数对象,就成为方法。如果属性不存在,则会查找prototype属性指定的对象。所以JavaScript是利用委派而不是继承实现面向对象。
在创建对象时,函数对象起到了构造器的作用。当调用new时完成以下操作:
生成对象
将原型的内部属性__proto__设置为原型的prototype属性,这里为Tool.prototype
调用函数,这里为Tool,参数为调用new时的参数
返回新对象
原型模式在《设计模式》中有介绍,“明确一个实例作为要生成对象的原型,通过复制该实例来生成新的对象”。原型模式在静态语言(如C++)中的作用不太显著,但对于动态语言(如JavaScript)则是核心思想。通常在面向对象中,对象的原型就是类,从类生成对象是普遍的认同。但另一种观点认为,类不是必须的,对象不需要从类生成,而是复制已有的对象。JavaScript正是采用了这种思想。
需要新对象时,只需向对象添加属性。添加函数对象,就成为方法。如果属性不存在,则会查找prototype属性指定的对象。所以JavaScript是利用委派而不是继承实现面向对象。
function Tool() { this.Use = function() { return "using..."; } } var tool = new Tool(); alert(tool.Use()); function Hammer() {} Hammer.prototype = new Tool(); var hammer = new Hammer(); alert(hammer.Use());
在创建对象时,函数对象起到了构造器的作用。当调用new时完成以下操作:
生成对象
将原型的内部属性__proto__设置为原型的prototype属性,这里为Tool.prototype
调用函数,这里为Tool,参数为调用new时的参数
返回新对象
相关文章推荐
- javascript的面向对象详解
- javascript 面向对象特性之继承
- web前端开发笔记:JavaScript面向对象总结
- javascript 特殊的面向对象以及继承详解(入门篇)
- JavaScript 面向对象之二 —— 函数上下文(call() 和 apply())
- JavaScript之面向对象浅析1
- Javascript高级程序设计——14.面向对象与原型(3)
- Javascript 面向对象学习1 Function function Object
- JavaScript 面向对象程序设计(下)--继承与多态
- javascript面向对象基础
- JavaScript之面向对象学习六原型模式创建对象的问题,组合使用构造函数模式和原型模式创建对象
- JavaScript 面向对象开发知识总结基础篇
- 优雅的JavaScript-面向对象
- 面向对象在JavaScript中的接口实现
- JavaScript模拟面向对象
- JavaScript面向对象
- javascript 面向对象例子
- JavaScript 面向对象开发知识基础总结
- 浅谈JavaScript的面向对象程序设计(二)
- javascript面向对象程序设计——封装(by vczero)