前言
需要弄清的几个问题:
1.为什么要有new关键词的诞生
2.为什么使用立即执行函数
3.链式编程(可能会涉及到闭包)
4.立即执行函数和构造函数及原型写法的好处
5.风格确立
1 new 关键词的诞生
我们先来回顾下,js中函数的写法
1 声明式
function add(x,y){return x+y};
2 表达式
var z=function(x,y){return x+y};
3 匿名式
function(x,y){return x+y};//常用于回调函数
那么为什么会有new关键词呢?new关键词常见于后端语言,用来实例化对象,那么前端的new是做什么的呢?我们继续往下看:
我们最初一般封装一个函数或者方法是像下面这样:
function add(x,y){return x+y};//封装加法函数
add(3,4);//结果返回7
我们像上面那样封装完函数后,直接调用,就能够完成业务代码;
正所谓科技的进步是随着需求而发展的.随着软件工程的日益发展,项目中可能会需要一个对象,而这个对象,我们会重复的使用,可能使用10万次哟!就比如克隆人,我想克隆100个人,名字和年龄都不同,难道你要像下面这样去做?
function clone1(name,age){};
function clone2(name,age){};
...直到写了100个;
麻烦!!!
而且,如果突然有一天,领导说,小王啊,我想知道克隆人65号叫什么.哇,这时候,你才发现,你找不到65号;总不能跟领导说,你去看源代码啊;
然后就有人这样写:
function clone(name,age){
var obj=new Object();
obj.name=name;
obj.age=age;
return obj;
};
var clone1=clone("xiaowang",23);
var clone2=clone("xiaoming",25);
....写了100个!
这个时候,你发现,领导要看65号克隆人的属性是,你直接把clone65丢个他就行了.这样就解决了问题,所以,有人就统一了这种写法,用new关键词来代替上面的三个步骤;也就是说,你可以像下面那样写:
我们可以看到,我们能够读取其属性,也不用我们在自己var obj=new Object()等等操作了;所以,new关键词就诞生了.
立即执行函数的诞生
我们一般使用一个函数,是这样写的:
var x=3;
var y=4;
function add(x,y){return x+y}
add(x,y)
但是这样写,除了你可以看到x的值,其他人也可以看到;如果你和其他人或者公司共同写一套代码,而这个x的值,是国务院给你的数据,绝对机密,你不想别人知道;怎么办呢?可以像下面这样写
用立即执行函数的形式,这样我们就没有办法获取到x的值了,这也是网上所说的,立即执行函数的特点以及优势:
1.可以立即执行且执行一次
2.防止变量污染
随着问题的逐步加深,我们会发现,我们有这样的一个需求,我有克隆技术,但是,克隆技术是非常机密的,不想任何人知道,但是,我还要随时能获取到我的克隆人的属性等参数,怎么办?这就是立即执行函数和构造函数以及原型的风格诞生,下面是几种风格的比较:
这里的风格选择就仁者见仁,智者见智了!
有关闭包和链式编程,大同小异;