转载:
- JavaScript 是基于原型的语言
- 用 JavaScript 进行面向对象的编程
- JavaScript 编码技巧
- JavaScript 的未来
目录:
JavaScript 对象是词典
JavaScript 函数是最棒的
构造函数而不是类
原型
静态属性和方法
闭包
模拟私有属性
从类继承
模拟命名空间
应当这样编写 JavaScript 代码吗?
JavaScript 对象是词典
在 C++ 或 C# 中,在谈论对象时,是指类或结构的实例。对象有不同的属性和方法,具体取决于将它们实例化的模板(即类)。而 JavaScript 对象却不是这样。在 JavaScript 中,对象只是一组名称/值对,就是说,将 JavaScript 对象视为包含字符串关键字的词典。我们可以使用熟悉的“.”(点)运算符或“[]”运算符,来获得和设置对象的属性,这是在处理词典时通常采用的方法。以下代码段
var userObject = new Objcet(); userObject.lastLoginTime = new Date(); alert(userObject.lastLoginTime);
的功能与下面的代码功能完全相同:
var userObject = {}; // equivalent to new Object() userObject['lastLoginTime'] = new Date(); alert(userObject['lastLoginTime']);
我们还可以直接在userObject的定义中定义lastLoginTime属性,如下所示:
var userObject = {'lastLoginTime' : new Date()}; alert(userObject.lastLoginTime);
注意,它与C#3.0对象初始化值非常相似。而且,熟悉Python的人会发现在第二和第三个代码段中实例化 userObject 的方法与在 Python 中指定词典的方法完全相同。唯一的差异是 JavaScript 对象/词典只接受字符串关键字,而不是像 Python 词典那样接受可哈希化的对象。
这些示例还显示 JavaScript 对象比 C++ 或 C# 对象具有更大的可延展性。您不必预先声明属性 lastLoginTime — 如果 userObject 没有该名称的属性,该属性将被直接添加到 userObject。如果记住 JavaScript 对象是词典,您就不会对此感到吃惊了,毕竟,我们一直在向词典添加新关键字(和其各自的值)。
这样,我们就有了对象属性。对象方法呢?同样,JavaScript 与 C++/C# 不同。若要理解对象方法,首先需要仔细了解一下 JavaScript 函数。
下一节: JavaScript 函数是最棒的 返回首页: Top