0

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

4

2 回答 2

1

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

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

内部函数可以访问outerA,即outerA在其作用域链上。内部函数被分配给x,所以之后它仍然可以访问outerA

alert(x()); // A

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

javascript 的这一特性可用于模拟基于类的语言所称的私有成员。它还可以用于继承,其中多个对象可以访问同一组值(对象、函数、原语等)。

于 2013-04-23T03:18:28.147 回答
0

Javascript 本身没有继承。我们只是通过各种方式模拟继承。

JS 中的闭包只是指函数在其范围内保留变量值的事实。所以是的,只要您谈论的是相同的对象和范围,该值就会被保留。

于 2013-04-23T03:20:23.547 回答