js函数调用-js网页特效代码_进源教程网

js编程规范,js模块化编程?有什么规范

摘要: JavaScript的编程规范找这个文抄章JavaScript程序编码规范这是一套适用于JavaScript程序的编码规范。它基于Sun的Java程序编码规范。但进行了大幅度的修改, 因为JavaScript ...

JavaScript的编程规范

找这个文抄章JavaScript程序编码规范这是一套适用于JavaScript程序的编码规范。它基于Sun的Java程序编码规范。但进行了大幅度的修改, 因为JavaScript不是Java。软件袭的长期价值直接源于其编码质量。在它的整个生命周期里,一个程序可能会百被许多人阅读或修改。如果一个程序可以清晰的展现出它的结构和特征度,那就能减少在以后对其进行修改时出错的可能性。编程规范可以帮助程序员们问增加程序的健壮性。所有的JavaScript代码都是暴露给公众的。答所以我们更应该保证其质量。保持整洁很重要。

js模块化编程?有什么规范

基础我们首先简单地概述一下,自从三年前Eric Miraglia(YUI的开发者)第一次发表博客描述模块化模式以来的一些模块化模式。如果你已经对于这些模块化模式非常熟悉了,大可以直接跳过本节,从“进阶模式”开始阅读。匿名闭包这是一种让一切变为可能的基本结构,同时它也是Javascript最棒的特性。我们将简单地创建一个匿名函数并立即执行它。所有的代码将跑在这个函数内,生存在一个提供私有化的闭包中,它足以使得这些闭包中的变量能够贯穿我们的应用的整个生命周期。复制代码 代码如下:(function () {// ... all vars and functions are in this scope only// still maintains access to all globals}());注意这对包裹匿名函数的最外层括号。因为Javascript的语言特性,这对括号是必须的。在js中由关键词function开头的语句总是会被认为是函数声明式。把这段代码包裹在括号中就可以让解释器知道这是个函数表达式。全局变量导入Javascript有一个特性叫做隐式全局变量。无论一个变量名在哪儿被用到了,解释器会根据作用域链来反向找到这个变量的var声明语句。如果没有找到var声明语句,那么这个变量就会被视为全局变量。如果这个变量用在一句赋值语句中,同时这个变量又不存在时,就会创建出一个全局变量。这意味着在匿名闭包中使用或创建全局变量是很容易的。不幸的是,这会导致写出的代码极难维护,因为对于人的直观感受来说,一眼根本分不清那些是全局的变量。幸运的是,我们的匿名函数提供了简单的变通方法。只要将全局变量作为参数传递到我们的匿名函数中,就可以得到比隐式全局变量更清晰又快速的代码了。下面是示例:复制代码 代码如下:(function ($, YAHOO) {// now have access to globals jQuery (as $) and YAHOO in this code}(jQuery, YAHOO));模块导出有时你不仅想要使用全局变量,你还想要声明它们,以供反复使用。我们可以很容易地通过导出它们来做到这一点——通过匿名函数的返回值。这样做将会完成一个基本的模块化模式雏形,接下来会是一个完整的例子:复制代码 代码如下:var MODULE = (function () {var my = {},privateVariable = 1;function privateMethod() {// ...}my.moduleProperty = 1;my.moduleMethod = function () {// ...};return my;}());注意我们已经声明了一个叫做MODULE的全局模块,它拥有2个公有的属性:一个叫做MODULE.moduleMethod的方法和一个叫做MODULE.moduleProperty的变量。另外,它还维护了一个利用匿名函数闭包的、私有的内置状态。同时,我们可以很容易地导入需要的全局变量,并像之前我们所学到的那样来使用这个模块化模式。进阶模式上面一节所描述的基础已经足以应对许多情况,现在我们可以将这个模块化模式进一步的发展,创建更多强大的、可扩展的结构。让我们从MODULE模块开始,一一介绍这些进阶模式。放大模式整个模块必须在一个文件e799bee5baa6e79fa5e98193e78988e69d8331333363386138中是模块化模式的一个限制。任何一个参与大型项目的人都会明白将js拆分多个文件的价值。幸运的是,我们拥有一个很棒的实现来放大模块。首先,我们导入一个模块,并为它添加属性,最后再导出它。下面是一个例子——从原本的MODULE中放大它:复制代码 代码如下:var MODULE = (function (my) {my.anotherMethod = function () {// added method...};return my;}(MODULE));我们用var关键词来保证一致性,虽然它在此处不是必须的。在这段代码执行完之后,我们的模块就已经拥有了一个新的、叫做MODULE.anotherMethod的公有方法。这个放大文件也会维护它自己的私有内置状态和导入的对象。宽放大模式我们的上面例子需要我们的初始化模块最先被执行,然后放大模块才能执行,当然有时这可能也不一定是必需的。Javascript应用可以做到的、用来提升性能的、最棒的事之一就是异步执行脚本。我们可以创建灵活的多部分模块并通过宽放大模式使它们可以以任意顺序加载。每一个文件都需要按下面的结构组织:复制代码 代码如下:var MODULE = (function (my) {// add capabilities...return my;}(MODULE || {}));在这个模式中,var表达式使必需的。注意如果MODULE还未初始化过,这句导入语句会创建MODULE。这意味着你可以用一个像LABjs的工具来并行加载你所有的模块文件,而不会被阻塞。紧放大模式宽放大模式非常不错,但它也会给你的模块带来一些限制。最重要的是,你不能安全地覆盖模块的属性。你也无法在初始化的时候,使用其他文件中的属性(但你可以在运行的时候用)。紧放大模式包含了一个加载的顺序序列,并且允许覆盖属性。这儿是一个简单的例子(放大我们的原始MODULE):复制代码 代码如下:var MODULE = (function (my) {var old_moduleMethod = my.moduleMethod;my.moduleMethod = function () {// method override, has access to old through old_moduleMethod...};return my;}(MODULE));我们在上面的例子中覆盖了MODULE.moduleMethod的实现,但在需要的时候,可以维护一个对原来方法的引用。克隆与继承复制代码 代码如下:var MODULE_TWO = (function (old) {var my = {},key;for (key in old) {if (old.hasOwnProperty(key)) {my[key] = old[key];}}var super_moduleMethod = old.moduleMethod;my.moduleMethod = function () {// override method on the clone, access to super through super_moduleMethod};return my;}(MODULE));这个模式可能是最缺乏灵活性的一种选择了。它确实使得代码显得很整洁,但那是用灵活性的代价换来的。正如我上面写的这段代码,如果某个属性是对象或者函数,它将不会被复制,而是会成为这个对象或函数的第二个引用。修改了其中的某一个就会同时修改另一个(译者注:因为它们根本就是一个啊!)。这可以通过递归克隆过程来解决这个对象克隆问题,但函数克隆可能无法解决,也许用eval可以解决吧。因此,我在这篇文章中讲述这个方法仅仅是考虑到文章的完整性。跨文件私有变量把一个模块分到多个文件中有一个重大的限制:每一个文件都维护了各自的私有变量,并且无法访问到其他文件的私有变量。但这个问题是可以解决的。这里有一个维护跨文件私有变量的、宽放大模块的例子:复制代码 代码如下:var MODULE = (function (my) {var _private = my._private = my._private || {},_seal = my._seal = my._seal || function () {delete my._private;delete my._seal;delete my._unseal;},_unseal = my._unseal = my._unseal || function () {my._private = _private;my._seal = _seal;my._unseal = _unseal;};// permanent access to _private, _seal, and _unsealreturn my;}(MODULE || {}));所有文件可以在它们各自的_private变量上设置属性,并且它理解可以被其他文件访问。一旦这个模块加载完成,应用程序可以调用MODULE._seal()来防止外部对内部_private的调用。如果这个模块需要被重新放大,在任何一个文件中的内部方法可以在加载新的文件前调用_unseal(),并在新文件执行好以后再次调用_seal()。我如今在工作中使用这种模式,而且我在其他地方还没有见过这种方法。我觉得这是一种非常有用的模式,很值得就这个模式本身写一篇文章。子模块我们的最后一种进阶模式是显而易见最简单的。创建子模块有许多优秀的实例。这就像是创建一般的模块一样:复制代码 代码如下:MODULE.sub = (function () {var my = {};// ...return my;}());虽然这看上去很简单,但我觉得还是值得在这里提一提。子模块拥有一切一般模块的进阶优势,包括了放大模式和私有化状态。

《JavaScript DOM编程艺术 》 中有哪些做法是过时的

这本书被很多人百称为经典入门书籍的原因是:通俗易懂,简单直接。能够让愿意学习JavaScript的人对JavaScript有一个初步的认识度。理解CSS、HTML、JavaScript三者之间的关系。根据书上问的提示做一个简单的静态网站。它作为“入门”的目的已经达到了如果说哪有过时只能说他这里面没有答写到DOM的高级技术。

HTML5怎么编程啊,还能做成系统?

HTML5 web应用程序直接使用在手机如果你做一个单机版的应用程序,操作系统和浏览器内核的具体情况取决于 C和C + +效率肯定是高的,但不跨平台HTML5可以跨平台

javascript的面向对象的编程介绍书籍有哪些

推荐两本javascript面向对象的编程书籍:《面向对象的Javascript》(Object-Oriented JavaScript)《Javascript高级程序设计(第二版)》(Professional JavaScript for Web Developers, 2nd Edition)关于javascript的其他书籍,找了资料分享一下:入门级,也适合想掌握一些前端技能的非前端工程师. <JavaScript Dom编程艺术> 成为一名合格的前端工程师 <JavaScript高级程序设计>(或<JavaScript权威指南>) <精通JavaScript> 更优秀的代码,更优良的设计 <JavaScript语言精粹> <JavaScript设计模式> 从语言细节到复杂工程实践,想开发靠谱的各类底层代码,应该看看 <Secrets of the JavaScript Ninja> <JavaScript Patterns> <ECMA-262 in Detail> 应该重视跟踪阅读一些大牛们的Blog了 一直在等待:<一本JavaScript语言作者或引擎实现者写的书> 各类专题书籍,读好第二批次书籍之后,有精力就接触下 <高性能网站建设指南> <高性能网站建设进阶指南> <高性能JavaScript> <Ajax实战7a64e58685e5aeb931333337396238> <JQuery实战> <精通CSS>(或<CSS权威指南>) <正则表达式必知必会>(或<正则表达式权威指南>) 应该选择:<一本HTML5方面的书> 应该选择:<一本NodeJS方面的书>最后的叮嘱:学习要循序渐进,一步一个脚印,如果想学,不是买了书就完了,要认真看!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表