js立即执行函数和链式编程以及面向对象的思考

前言

需要弄清的几个问题:
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.防止变量污染

随着问题的逐步加深,我们会发现,我们有这样的一个需求,我有克隆技术,但是,克隆技术是非常机密的,不想任何人知道,但是,我还要随时能获取到我的克隆人的属性等参数,怎么办?这就是立即执行函数和构造函数以及原型的风格诞生,下面是几种风格的比较:
在这里插入图片描述
这里的风格选择就仁者见仁,智者见智了!
有关闭包和链式编程,大同小异;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李卓书

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值