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. Unity3d学习 相机的跟随

    最近在写关于相机跟随的逻辑,其实最早接触相机跟随是在Unity官网的一个叫Roll-a-ball tutorial上,其中简单的涉及了关于相机如何跟随物体的移动而移动,如下代码: using Unit ...

  2. 前端开发中SEO的十二条总结

    一. 合理使用title, description, keywords二. 合理使用h1 - h6, h1标签的权重很高, 注意使用频率三. 列表代码使用ul, 重要文字使用strong标签四. 图片 ...

  3. setTimeout 的黑魔法

    setTimeout,前端工程师必定会打交道的一个函数.它看上去非常的简单,朴实.有着一个很不平凡的名字--定时器.让年少的我天真的以为自己可以操纵未来.却不知朴实之中隐含着惊天大密.我还记得我第一次 ...

  4. 7.让网站支持http和https的访问方式

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#iis 怎么让网站在本地支持SSL?http://www.c ...

  5. JdbcTemplate+PageImpl实现多表分页查询

    一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...

  6. .net erp(办公oa)开发平台架构概要说明之表单设计器

    背景:搭建一个适合公司erp业务的开发平台.   架构概要图: 表单设计开发部署示例图    表单设计开发部署示例说明1)每个开发人员可以自己部署表单设计至本地一份(当然也可以共用一套开发环境,但是如 ...

  7. 【Machine Learning】Python开发工具:Anaconda+Sublime

    Python开发工具:Anaconda+Sublime 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现 ...

  8. servlet 简介,待完善

    什么是Servlet?① Servlet就是JAVA 类② Servlet是一个继承HttpServlet类的类③ 这个在服务器端运行,用以处理客户端的请求 Servlet相关包的介绍--javax. ...

  9. 易用BPM时代,企业如何轻松驾驭H3?

    众所周知,BPM作为企业发展的推动力,能敏捷高效的融合业务流程和信息资源.通过综合考虑流程的成本.效率.质量等方面因素,用IT系统将调整后的流程固化下来,从而降低企业管理成本,提高内部运营效率,提升企 ...

  10. JAVA环境变量和TomCat服务器配置

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样 ...