在javascript中闭包只限制变量的范围吗?

时间:2013-04-23 03:06:19

标签: javascript

我正在读一本书并遇到“关闭javascript限制函数中变量的范围”..这是否意味着,如果任何另一个从带有闭包的函数对象继承的对象,则无法访问其属性

2 个答案:

答案 0 :(得分:1)

闭包是代码可以访问外部执行上下文中的变量的地方。在有用的闭包中,变量在包含它的函数完成执行后继续存在,例如,

var x = (function() {
  var outerA = 'A';
  return function() {
    return outerA;
  }
}());

内部函数可以访问outerA,即outerA在其范围链上。内部函数已分配给x,因此之后仍可访问outerA

alert(x()); // A

所以闭包并不限制范围,它们是它的结果。

javascript的这个功能可以用来模拟基于类的语言称为私有成员的内容。它也可以用于继承,其中多个对象可以访问同一组值(对象,函数,基元等)。

答案 1 :(得分:0)

Javascript中没有继承。我们只是通过various means模拟继承。

JS中的闭包仅仅是指函数在其范围内保留变量值的事实。所以是的,只要您谈论同一个对象并且该值将被保留。范围。