函数
2016-11-14 10:32:23 0 举报
AI智能生成
函数
作者其他创作
大纲/内容
函数
对象字面量产生的对象连接到Object.prototype
函数对象连接到Function.prototye
函数是对象。
函数对象
闭包,通过函数字面量创建的函数对象包含一个连到外部上下文的连接
函数字面量
方法调用模式
函数调用模式
构造器调用模式
apply调用模式
调用模式
过多的参数会被忽略
缺少的参数为undefined
实际参数与形式参数个数不匹配时不会报错
调用
方法:一个函数被保存为对象的一个属性
一个方法被调用时,this被绑定至该对象
公共方法:通过this可取得所属对象的上下文的方法
使用var that = this来解决
使用new来调用函数var Quo = function(string){ this.status = string;}var myQuo = new Quo(\"str\");
创建一个连接到该函数的prototype成员的新对象,this被绑定至新对象
接收两个参数,(要绑定给this的值,参数数组)
var statusObject = { status: 'A-ok' };//statusObject没有继承Quo.prototype,但可调用Quo原型方法var status = Quo.prototype.get_status.apply(statusObject);
Apply调用模式
arguments只是类似数组的对象。拥有一个length属性。不具有任何数组方法
参数
一个函数总会返回一个值。若没有指定则返回undefined
若函数调用时在前面加了new前缀,且返回值不是一个对象,则返回this(新对象)
返回
throw
一个try语句只会有一个捕获所有异常的catch代码块
异常
扩充类型的功能
具有函数作用域。
在函数体的顶部声明函数中可能用到的所有变量。
作用域
糟糕的例子var add_the_handlers = function(nodes){ var i; for(i = 0; i < nodes.length; i++){ nodes[i].onclick = function(e){ alert(i); } }}
改良的例子var add_the_handlers = function(nodes){ var helper = function(i){ return function(e){ alert(i); } } var i; for(i = 0; i < nodes.length; i++){ nodes[i].onclick = helper(i); }}
闭包
同步请求会导致客户端进入假死状态。若网络传输或服务器很慢,响应更慢
发起异步请求,提供一个当服务器的响应到达时随即触发的回调函数。异步函数立即返回
回调
一般形式:一个定义了私有变量和函数的函数;利用闭包创建可访问私有变量和函数的特权函数,最后返回这个特权函数
模块
getElement('myBoxDiv') .width(100) .height(100) .color(\"red\")
级联
允许把函数与传递给它的参数相结合,产生一个新函数
柯里化
e.g.用数组去保存fibonacci的结果,避免重复调用
记忆
0 条评论
回复 删除
下一页