1.沙箱:与外界隔绝的一个环境,外界无法修改该环境内的任何信息(沙箱内的东西单独属于一个世界)
(1)360沙箱模式:将软件和操作系统进行隔离以达到安全的目的
(2)JS中的沙箱模式:还是通过函数来实现的
<1>沙箱模式的基本模型:自调用函数
(
function
(){
var
a =
123
;
//外面并不能访问到这个a
})()
;
<2>沙箱里面的变量对外面没有影响
<3>为什么要使用立即执行函数表达式IIFE(其实就是匿名函数)来写沙箱:因为立即IIFE不会在外界暴露任何的全局变量,但是又可以形成一个封闭的空间,刚好可以实现沙箱模式
<4>在沙箱中将所有变量的定义放在最上面,然后中间就放一些逻辑代码
<5>js中沙箱模式的实现原理:函数可以构建作用域,上级作用域不能直接访问下级作用域中的数据
(3)jquery中的沙箱模式
(
function
(win){
var
itcast = {
//这个itcast是在沙箱里面的,外面没法用,那么jquery是怎么实现在沙箱里面写$符被外界使用到的呢?
getEle
:
function
(){
}
}
;
window
.
ircast
=
window
.
$
= itcast
;
//把itcast设置为window全局对象的一个属性
})(
window
)
;
//把全局变量当做参数
itcast.
getEle
()
;
<1>如果需要在外界暴露一些属性/方法,就可以将这些属性/方法加到window全局对象上去,但是这个window全局对象不可以直接引用,因为直接引用会破坏沙箱原则,所以选择使用传参的形式将window对象传入沙箱内。此时沙箱内使用window对象的时候不会再去全局搜索window对象而使用的是沙箱内部定义的形参
<2>如果需要,就给外界暴露一些属性/方法(通过window)