WPTheme Java JavaScript…Yeah~!

开卷有益

Jul 01

  模拟私有属性

  好的,让我们看看闭包是怎么帮助我们模拟私有成员的吧。通常来说,一个函数内部的本地变量在外部是无法访问的。一旦函数创建,其内部所有的本地变量就消失了。但是,当其本地变量被闭包捕获后,它又复活了。这就是在JavaScript中模拟私有属性的关键之处。请看下面的Person类:

function Person(name, age) {
this.getName = function() { return name; };
this.setName = function(newName) { name = newName; };
this.getAge = function() { return age; };
this.setAge = function(newAge) { age = newAge; };
}

参数name和age对于Person构造函数来说属于本地变量。当Person返回时,假定参数name和age已经消失了,但当他们被4个内部函数捕获后,就复活回来了。而这4个内部函数是作为Person对象的方法而存在的,而name和age就严格地通过这4个方法来访问。所有你可以这样做:

(more…)

Jun 24

(more…)

Jun 21

  原型
  原型对象是JavaScript面向对象编程的中心概念。其称谓来源于JavaScript中对象的创建,都是作为一个现有的样例(即原型)的副本。这个原型对象的任何属性和方法,都会作为这个现有的原型构造器所创建的对象的属性和方法出现的。也可以说这些对象都从它的原型那里继承了所有属性和方法。例如当你这样样创建一个Dog对象的时候:

var buddy = new Dog("Buddy");

那个被buddy引用的对象从它的原型继承了所有属性和方法,尽管简单的一行代码可能并不足以看清原型的来源。对象buddy的原型来自一个构造函数的原型(在这个例子中,就是函数Dog)。

  在JavaScript中,每个函数都有一个指向到原型对象的,叫”prototype”的属性。反过来,这个原型对象又会有一个叫”constructor”的属性,它指向回函数本身。这是一种环形的映射关系。为了更好地理解这个环形关系,请看插图 Figure3

(more…)

Jun 20

  不用类的构造函数

  正如我们注意到的,关于JavaScript面向对象编程的最奇怪之处就是,JavaScript不像C#或C++那样有类。在C#中,当你这样写:

Dog spot = new Dog();

会得到一个Dog类所实例化的对象。但JavaScript没有类可以让我们入手。最接近的方法是,你可以像这样定义一个构造函数:

(more…)

Jun 20

  JavaScript函数是最初的类

  在很多编程语言中,函数和对象通常被看作两个不同的事物。在JavaScript,他们的区别很模糊–一个JavaScript的函数就是一个关联了可执行代码的真正的对象。想想一个普通的函数是这样的:

function func(x) {
alert(x);
}
func("blah");

  这就是在JavaScript中字义函数的方法。但我们也可以像下面那样定义一个函数,即定义一下匿名的函数然后赋值给一个变量func

(more…)

Jun 19

  最近,我会见了一个有5年网络应用程序开发经验的程序员。她编写JavaScript已经有半年了,并认为她的JavaScript技巧很不错,但之后我很快地发现–她对JavaScript的了解可以说是一无所知。但我没有责备她这点。JavaScript在这种情况下显得很滑稽,它是一个让很多人(包括作者自己在之前也这样认为)都觉得自己已经很熟手了,因为他们都有着C/C++/C#或其它之前的编程经验了。

(more…)