标签:
作者:zccst
第四章:函数
函数的两个特征:是对象;提供作用域。
函数是对象表现如下:
下面介绍八种函数
一、API模式,为函数提供更好且更整洁的接口。
1,回调模式
也就是说,作为回调函数传递的时候
例如obj1.method1(obj2.method2)时,method1方法的this指向obj1,但obj2.method2方法的this并不指向obj2,而是window。
如果需要将obj2.method2的this指向某一个对象,则需要使用call或apply。具体是:
obj1 = {
method1:function(callback, xxObj){
//callback(args);//如果直接运行this指向window
callback.call(xxObj, args);//就可以了
}
}
批注:this指向window的还有超时函数
2,即时函数的返回值是另一个函数
首先,什么是即时函数?
(function(){
alert("watch out!");
}());
或
(function(){
alert("watch out!");
})();
(1)即时函数的传参
(2)即时函数的返回值。返回值是一个函数的模式得到广泛应用。
3,配置对象
var conf = {...};
addPerson(conf);
4,curry函数
把两个参数的函数拆成两部,第一个子函数接收第一个参数,再里面嵌套第二个子函数接收第二个参数。
二、性能模式,可以帮助加速代码运行
1,自定义函数
很奇葩的类型
var scareMe = function(){
alert("Boo!");
scareMe = function(){
alert("Double Boo!");
};
};
scareMe();//Boo!
scareMe();//Double Boo!
2,函数属性——备忘模式
即使用函数的静态属性和方法来保存实例
三、初始化模式
1,即时函数
2,即时对象初始化
({
xx
xx
init:function(){}
}).init();
3,初始化时分支
第五章:对象
如果通过共有方法访问私有复合数据类型时,可能会导致私有复合数据类型被改写,所以最好不要直接传递,
如果需要传递,则有一下几种办法:
1,只传递复合数据类型的子属性(即基本数据类型)
2,通过浅复制和深复制的方式。
标签:
原文地址:http://www.cnblogs.com/shsgl/p/4289940.html