Welcome 微信登录

首页 / 脚本样式 / JavaScript / 使用JavaScript实现观察者模式

使用JavaScript实现观察者模式2011-01-27 cnblogs Selfocus原文出处:http://www.codeproject.com/KB/scripting/Observer_Pattern_JS.aspx

JavaScript的简单介绍

JavaScript是一种基于原型(prototype)的脚本语言(以前叫LiveScript)。它的语法松散,类似于C语言。该脚本语言是由Netscape社团开发的,用于Navigator浏览器。和C语言一样,JavaScript本身没有构造函数和析构函数。C语言依赖于标准输入/输出库;而JavaScript则依赖于执行它的宿主环境。这种脚本语言使用自定义函数,其他语言中可能会被称为过程、例程或功能。基于web的JavaScript主要用于在web页面中和DOM(即文档对象模型)进行交互,以便完成一些仅使用HTML无法实现的功能。JScript是微软推出的和 JavaScript 对应的一种脚本语言,它用于微软的IE浏览器当中。

在JavaScript中创建自定义对象

创建一个新的JavaScript对象需要2个步骤。首先,你需要创建一个函数,函数名就是新建的类的名称。这个函数也就是我们经常说的 构造函数。然后,你必须使用 new 操作符,后面跟上对象的名称以及一些必要的参数来创建一个对象的实例。下面的代码定义了一个 Person 函数,然后使用 new 操作符创建了 Person 的实例:

function Person(name, surname)
{
this.name = name;
this.surname = surname;
}

var salvo = new Person("Salvatore", "Vetro");

this关键字是指向你当前正在执行的对象的实例,因此,允许你在当前对象上添加或修改对象的属性。

如何为对象添加方法?

在JavaScript中,通过调用绑定了原型属性的 构造函数 来创建任何对象。添加新方法的语法如下:

customeObject.prototype.newMethodName = function;
//方法体
Person.prototype.Speak = function(){...};

如果你在一个对象的prototype属性上添加一个方法,那么,所有通过该对象的构造函数创建的实例都具有这个新方法。注意,prototype 本身也是一个对象,而且能够通过 对象文字语法(object literal syntax) 来为它定义属性和方法:

function NewObject()
{
alert("I am a new object.");
}

NewObject.prototype =
{
alert1 : function(str){alert(str);}, //新方法
name : "As you want", //新属性
Alert2 : function(){alert("Bye.");}, //新方法
};
var newObject = new NewObject();
newObject.alert1("Ciao");
newObject.name;
newObject.alert2();

脚本每次尝试读/写对象的属性的时候,JavaScript会按照特定的顺序来搜寻和指定名称匹配的属性。顺序如下:

l 如果该属性已经分配给当前对象,则使用该属性的值;

l 如果在当前对象中没有搜索到指定的属性,则检查该对象构造函数的prototype属性的值;

l 沿着prototype链一直查找,直到找到匹配的属性(已经为它赋值),否则,一直会查找到 Object 对象。因此,如果你改变了构造函数的prototype属性的值,并且没有在构造函数的某个实例中重写属性的值,JavaScript会返回对象当前prototype属性的值。