闭包 !if(){}.call()

204 阅读1分钟

例如一个文件同时调用了两个js文件, 每个js文件都做了封装使得内部变量外部无法访问,但是我就要访问###

文件yi 做到了 访问封装的文件er !if(){ var person=window.preson console.log(person) }.call()

文件er !if(){ var person = window.person={ //局部变量 person 与 window.person 都存了 name:'jack' 的地址 name:'jack' } }.call()

闭包

!if(){
var newAge=window.jackGrowUp() console.log(newAge) }.call()

!if(){ var person = window.person={ //局部变量 person 与 window.person 都存了 name:'jack' 的地址 name:'jack', age:18 } window.jackGrowUp=function(){ person.age+=1 return person.age } }.call()

立即执行函数使得 person 无法被外部访问 闭包使得匿名函数可以操作 person window.frankGrowUp 保存了匿名函数的地址 任何地方都可以使用 window.frankGrowUp => 任何地方都可以使用 window.frankGrowUp 操作 person,但是不能直接访问 person ###