精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-16
开场白 :
JavaScript是近年来一个非常流行并被广泛应用的语言。因为它被几乎所有的浏览器所支持,因此也得到了广泛的推广。作为一种语言,它在我们的生活变得难以相信的重要,帮助我们增强web的功能,创建丰富的用户界面。
JavaScript的一个很重要的特性就是其灵活性。作为JavaScript程序员,你可以使你的程序很简单或很复杂。JavaScript允许你使用各种不同的编程风格。你可以使用函数式风格或者接近于面向对象的编程风格来编写你的代码,同样你可以在不了解函数式或面向对象编程的情形下书写相对复杂的程序,你也可以通过写一些简单的函数来使用它。或者这些也是一些人把JavaScript看做“玩具”语言的一个原因,但我们应该认为这些是一些优秀的特性。它可以使程序员只掌握小部分易学的语言子集来完成一些有用的功能,同样它也意味着当你成为一个更加高级的程序员时JavaScript会在你手中发挥更大的能力。
function startAnimation() { } function stopAnimation() { }
这种方法非常简单,但它没有创建一个动画的对象来使你可以保存状态并拥有一些只作用于其内部状态的方法。下面这段代码定义了一个类使你可以创建这样的一个对象:
/* Anim class. */ var Anim = function() { }; Anim.prototype.start = function() { }; Anim.prototype.stop = function() { }; /* Usage. */ var myAnim = new Anim(); myAnim.start(); myAnim.stop();
这里定义了一个叫做Anim的类并为该类的prototype属性增加了两个方法。我们在第三章将详细讨论这种技术。如果你喜欢创建一个只有一个声明的类,你可能会写出如下的代码:
/* Anim class, with a slightly different syntax for declaring methods. */ var Anim = function() { }; Anim.prototype = { start: function() { }, stop: function() { } };
这看起来有点类似于经典的面向对象编程风格:将函数声明嵌套在一个类声明之内。如果你之前使用过这种风格,你可以试一下下面这个例子,如果不太理解下面的部分代码也不要担心: /* Add a method to the Function object that can be used to declare methods. */ Function.prototype.method = function(name, fn) { this.prototype[name] = fn; }; /* Anim class, with methods created using a convenience method. */ var Anim = function() { }; Anim.method('start', function() { }); Anim.method('stop', function() { });
Function.prototype.method使你可以为类增加新的方法。它可以接收两个参数:第一个是作为新方法的名字的字符串,第二个是为这个方法名指定的一个函数。
/* This version allows the calls to be chained. */ Function.prototype.method = function(name, fn) { this.prototype[name] = fn; return this; }; /* Anim class, with methods created using a convenience method and chaining. */ var Anim = function() { }; Anim. method('start', function() { }). method('stop', function() { });
结束语 :
在JavaScript语言中,函数是第一性的对象。它可以被存储在一个变量中,作为参数传入到函数中,被函数作为返回值返回,或者在运行的时间动态构造。这些特性使你在使用函数增加了很大的灵活性和表现能力。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-04-22
我写了好几年Js但很少用到面向对象的思想,很惭愧,谢谢了!
|
|
返回顶楼 | |
发表时间:2011-04-22
http://wanghongxu.iteye.com/blog/434997
发贴重复了吧 ? |
|
返回顶楼 | |
发表时间:2011-04-22
近年来js的框架越来越牛啦,迟早会将面向对象的理念完全加进去的.
|
|
返回顶楼 | |
发表时间:2011-04-22
但还是有区别的!
|
|
返回顶楼 | |
发表时间:2011-04-22
。。。区别
|
|
返回顶楼 | |
发表时间:2011-04-22
js是基于原型的语言,面向对象是模拟的!
|
|
返回顶楼 | |
发表时间:2011-04-22
LZ先我一步了啊,一直想写JS的设计模式呢
|
|
返回顶楼 | |
发表时间:2011-04-22
大家互相交流啊!
|
|
返回顶楼 | |
发表时间:2011-04-23
加上转载2个字把
|
|
返回顶楼 | |