JavaScript精粹读书笔记(4)
http://blog.csdn.net/mouyong/archive/2009/12/07/4959741.aspx
第4章 函数
JavaScript中最好的特性就是它对函数的实现。它几乎无所不能。但是,想必你也能预料到,函数在JavaScript里也并非万能药。
函数包含一组语句,它们是JavaScript的基础模块单元,用于代码复用、信息隐藏和组合调用。函数用于指定对象的行为。一般来说,所谓编程就是将一组需求分解成一组函数与数据结构的技能。
4.1 函数对象
在JavaScript中函数就是对象。对象是“名:值”对的集合并拥有一个连到原型对象的隐藏连接。对象定义产生的对象连接到Object.prototype。函数对象连接到Function.prototype(该原型对象本身连接到Object.prototype)。每个函数在创建时附有两个附加的隐藏属性:函数的上下文和实现函数行为的代码(JavaScript创建一个函数对象时,会给该对象设置一个“调用”属性。当JavaScript调用一个函数时,可理解为执行了此函数的“调用”属性。具体参阅ECMAScript规范的13.2 Creating Function Object)。
每个函数对象在创建时也随带有一个prototype属性。它的值是一个拥有constructor属性且值即为该函数的对象。这和隐藏连接到Function.prototype完全不同。这个令人费解的构造过程的意义将会在下个章节中揭示。
因为函数是对象,所以它们可以像任何其他的值一样被使用。函数可以存放在变量,对象和数组中,函数可以被当作参数传递给其他函数,函数也可以再返回函数。而且,因为函数是对象,所以函数可以拥有方法。
4.2 函数定义
函数对象可以通过函数定义来创建:
//创建一个名为add的变量,并用来把两个数字相加的函数赋值给它。
var add=function(a,b){
return a+b;
};
函数定义包括四个部分。第一个部分是关键字function
第二部分是函数名,它可以被省略。函数可以用它的名字来递归地调用自己。此名字也能被调试器和开发工具来识别函数。如果没有给函数命名,比如上面这个例子,它会被认为是匿名函数。
函数的第三部分是包围在圆括号中的一组参数。其中每个参数用逗号分隔。这些名称将被定义为函数中的变量。它们不像普通的变量那样将被初始化为undefined,而是在该函数被调用时初始化为实际提供的参数的值。
第四部分是包围在花括号中的一组语句。这些语句是函数的主体。它们在函数被调用时执行。
相关文档:
在看一些js框架的脚本时,被一个问题狠狠的困扰着,就是下面的代码是什么意思
var KE = {};
KE.version = '3.4.1';
KE.lang = {
source : '切换模式',
undo : '后退(Ctrl+Z)',
redo : '前进(Ctrl+Y)',
cut : '剪切(Ctrl+X)',
copy : '复制(Ctrl+C)',
paste : '粘贴(Ctrl+V)'
......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
A:link { so-language: zxx }
-->
面向对象基础
JavaScript
是完全面向对象的语言。所以不可能以非面向对象的方法来使用。
对象(
Object
)
从最基本的层次上说,对象是一系列属性的集合,和其他语言里的散列表结构类似。
例如:两个 ......
这主要用于选择器过滤重复元素时用的。
涉及三种可能的手段:sourceIndex,uniqueID与自定义的uuid。
sourceIndex 获取元素节点在页面的出现顺序,即为其在document.all集合中的索引号。由于要准确获取先后位置,如果在其前面插入一个元素节点,那么它的位置就要加一。换言之,它是动态分配的,每次都要重复计算。注意,I ......
第9章
代码风格
计算机程序是人类制造出来的最复
杂的事物。程序通常由很多部分组成,表现为函数、语句和表达式,它们必须准确无误地按照顺序排列。最终的结果几乎都和实现它的程序没有什么相似之处。在软
件的产品生命周期中,通常它们都会被修改。把一个正确的程序转化为另一个同样正确但风格不同的程序,是 ......