闭包

2019-01-06  本文已影响0人  MDIF

封装对象/变量的细节
-立即执行函数使得 person 无法被外部访问

!function(){
  var person = {
    name:'jack',
    age:18
  }
}.call()
let a = person.age//Uncaught ReferenceError: person is not defined

person的作用域是立即执行函数内,所以会是not defined。使用闭包可以解决这个问题。

!function(){
  var person = {
    name:'jack',
    age:18
  }
window.growUp = function (){
    return person.age +=1
  }
window.personAge = function(){
    return person.age
  }
}.call()
window.growUp()
window.personAge()

另一种写法

var accessor  = function(){
  var person = {
    name:'jack',
    age:18
  }
return function (){
     return person.age += 1
  }
}
var growAge = accessor.call()
growAge.call()

可以通过返回一个对象来返回多个接口

var accessor  = function(){
  var person = {
    name:'jack',
    age:18
  }
return {
    growAge:function (){
    return person.age += 1
    },
    getAge:function (){
    return person.age
    }
  }
}
上一篇 下一篇

猜你喜欢

热点阅读