《JavaScript模式》读书笔记
作者: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,通过浅复制和深复制的方式。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。