1.函数命名规范
函数命名通常以动词为前缀的词组。通常第一个字符小写。当包含多个单词时,一种约定是将单词以下划线分割,就像"like_Zqz()"。
还有一种就是"likeZqz()"。有些些函数是用作内部用的或者为私有函数通常以一条下划线为前缀,就像"_zqzName()"。
 
2.以表达式方式定义的函数
如:
var zqz=function (){
return "zhaoqize";
}
在使用的时候必须把它赋值给一个变量,这里就是zqz。d这里我们就想了之前说的变量提前了JavaScript权威设计--JavaScript类型,值,变量(简要学习笔记四)。但给变量赋值是不会提前的,所以表达式方式定义的函数在定义之前无法调用。
上面的函数是有return返回的。与之不同的是无返回值的函数,这种函数有时候被称为过程。
 
3.函数声明语句
function a(){

}
上面是函数声明语句。函数声明语句并非真正的语句。他们作为顶级语句可以出现在全局代码里。或者内嵌到其他函数中,但是他们不能出现在循环语句,条件语句等中。但函数定义表达式可以出现在任何地方,包括循环语句,条件判断等中。
下面是函数定义表达式
var a=function (){

}
 
4.函数调用的四种方式
方式一:作为函数
function a(){

}
//调用
a();
 
方式二:作为方法
如:
var calcu={    //定义对象直接量
ope:1,
opa:1,
add:function(){
this.result=this.ope+this.opa; //this指代当前对象
}
}
//调用
calcu.add(); //这个方法调用计算1+1的结果,先调用该方法,然后再去获取它的值,执行calcu.result
 
这是一个调用表达式,它包括函数表达式calcu.add,函数表达式本身就是一个属性访问表达式,这意味着该函数被当做一个方法,而不是作为一个普通函数来调用。
 
calcu.result;    //
 
方法调用与函数调用重要区别:调用上下文
 
属性访问表达式由两部分组成:一个对象(calcu),一个属性名称(add)。
在这样的方法表达式里,对象calcu调用上下文,函数体可以使用关键字this来引用该对象(这个对象就是calcu)。
看下面两行代码,假设功能一样,都作用于对象rect:
 
rect.setSize(width,height);
setRectSize(rect,width,height);
 
第一句可以清晰的看出这个函数执行的载体是rect对象,函数中的所有操作都是基于这个对象。
 
当方法不需要返回值时,最好直接返回this,如果在设计的API中一直采用这种方式每个方法都返回this,使用API就可以进行"链式调用"风格的编程,在这种编程中,只要制定一次要调用的对象即可。余下的方法都可以基于此进行调用。
典型的例子就是jQuery。
 
this的指向:
例子说明:(这个例子适合深度思考,结合jQuery)
var o={    //对象o
m:function(){ //对象中的方法m()
var self=this; //将this值保存至一个变量中
console.log(this===o) //true,this就是对象o
f(); //调用嵌套函数f function f(){
console.log(this===o); //false:this指向的是全局对象或者undefined
console.log(self===o); //true:self指向外部函数的this值
}
}
}
//调用
o.m();
 
误解:很多人误以为上面例子中嵌套函数f中的this会指向外层函数的上下文this。
如果你想访问外部的this,需要将this的值保存在yige变量中。这个变量和内部函数都在同一个作用域。
 
这里有个链接专门是用来解释this中所指的问题:http://www.ibm.com/developerworks/cn/web/1207_wangqf_jsthis/
 
方式三:作为构造函数(明天学习)
方式四:通过call()与apply()方法间接调用(明天学习
 

JavaScript权威设计--JavaScript函数(简要学习笔记十)的更多相关文章

  1. JavaScript权威设计--事件处理介绍(简要学习笔记十七)

    1.事件相关概念 事件类型:一个用来说明发生什么类型事件的字符串 事件目标:是发生的事件或与之相关的对象. 事件处理程序(事件监听程序):是处理货响应事件的函数. 事件对象:是与特定事件相关并且包含有 ...

  2. JavaScript权威设计--Window对象(简要学习笔记十三)

    1.Window对象是所有客户端JavaScript特性和API的主要接入点. Window对象中的一个重要属性是document,它引用Document对象. JavaScript程序可以通过Doc ...

  3. JavaScript权威设计--JavaScript函数(简要学习笔记十一)

    1.函数调用的四种方式 第三种:构造函数调用 如果构造函数调用在圆括号内包含一组实参列表,先计算这些实参表达式,然后传入函数内.这和函数调用和方法调用是一致的.但如果构造函数没有形参,JavaScri ...

  4. javascript权威指南第6版学习笔记

    javascript权威指南第6版学习笔记 javascript数组.函数是特殊对象 看一点少一点. 3.1.4 hello.js内容是 var x=.3-.2;var y=.2-.1 console ...

  5. JavaScript权威设计--命名空间,函数,闭包(简要学习笔记十二)

    1.作为命名空间的函数 有时候我们需要声明很多变量.这样的变量会污染全局变量并且可能与别人声明的变量产生冲突. 这时.解决办法是将代码放入一个函数中,然后调用这个函数.这样全局变量就变成了 局部变量. ...

  6. JavaScript权威设计--Window对象之Iframe(简要学习笔记十四)

    1.Window对象属性的文档元素(id) 如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而他们的值指向 ...

  7. JavaScript权威设计--JavaScript数组(简要学习笔记九)

    1.数组的创建 如: var a=[1.1,null,"a"]; var b=[1, ,3]; //中间的那个元素是undefined var c=[ , , ] 这里c.leng ...

  8. JavaScript权威设计--JavaScript对象(简要学习笔记七)

    1.with语句 语法: width(object){ statement } with语句可用于临时扩展作用域链.作用域链可以按序检索的对象列表,通过它可以进行变量名解析. with将object添 ...

  9. JavaScript权威设计--JavaScript表达式与运算符,语句(简要学习笔记六)

    1.delete是一元操作符,用来删除对象属性或者元素. var a={ x:1, y:2 } delete a.x; //删除x属性 “x”in a //false:a对象中已经不存在x属性 ale ...

随机推荐

  1. iOS开源项目周报0105

    由OpenDigg 出品的iOS开源项目周报第四期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开发方面的开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. He ...

  2. Partition1:新建分区表

    未分区的表,只能存储在一个FileGroup中:对Table进行分区后,每一个分区都存储在一个FileGroup,或分布式存储在不同的FileGroup中.对表进行分区的过程,是将逻辑上完整的一个表, ...

  3. CSS 选择器及各样式引用方式

    Css :层叠样式表 (Cascading Style Sheets),定义了如何显示HTML元素. 目录 1. 选择器的分类:介绍ID.class.元素名称.符合.层次.伪类.属性选择器. 2. 样 ...

  4. webpack的使用

    1.webpack是什么? 打包前端项目的工具(为项目提高逼格的东西). 2.webpack的基本命令 webpack#最基本的启动webpack命令 webpack-w #提供watch方法,实时进 ...

  5. C++11特性——变量部分(using类型别名、constexpr常量表达式、auto类型推断、nullptr空指针等)

    #include <iostream> using namespace std; int main() { using cullptr = const unsigned long long ...

  6. atitit.attilax的软件 架构 理念.docx

    atitit.attilax的软件 架构 理念.docx 1. 预先规划.1 2. 全体系化1 3. 跨平台2 4. 跨语言2 5. Dsl化2 5.1. 界面ui h5化2 6. 跨架构化2 7. ...

  7. ASP.NET Aries JSAPI 文档说明:AR.DataGrid、AR.Dictionary

    AR.Global 文档 1:对象或属性: 名称 类型 说明 DG 对象 DataGrid操作对象 //datagrid集合,根据ID取出DataGrid对象,将Json当数组用. Items: ne ...

  8. 【腾讯Bugly干货分享】Android进程保活招式大全

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ac4a0ea374c75371c08ce8 作者:腾讯——张兴华 目前市面上 ...

  9. Unity3D新手引导开发手记

    最近开始接手新手引导的开发,记录下这块相关的心得 首先客户端是Unity,在接手前,前面的同学已经初步完成了新手引导框架的搭建,这套框架比较简单,有优点也有缺点,稍后一一点评 我们的新手引导是由一个个 ...

  10. 【技巧】使用weeman来做一个钓鱼网页

    本文来自网友836834283 对玄魂工作室的投稿. 工具项目地址:https://github.com/Hypsurus/weeman/ 克隆地址:https://github.com/Hypsur ...