我正在读一本书,并遇到“JavaScript中的闭包限制了函数中变量的范围”..这是否意味着,如果从闭包的函数对象继承的任何其他对象无法访问其属性JavaScript中的闭包是否仅限制变量的范围?
回答
闭包是代码可以访问外部执行上下文中的变量的地方。在有用的闭包中,一个变量在包含它的函数完成执行后继续存在,例如
var x = (function() {
var outerA = 'A';
return function() {
return outerA;
}
}());
内功能访问outerA
,即outerA
是其范围链。内部功能被分配给x
,所以后来它仍然可以访问outerA
:
alert(x()); // A
所以关闭不限制范围,它们是它的一个后果。
此功能的JavaScript可用于模拟基于类的语言将调用私人成员。它也可以用于继承,其中多个对象可以访问相同的一组值(对象,函数,原语,等等)。
JavaScript中没有继承关系。我们只是模拟继承various means。
JS中的封闭只是指在其范围内保留变量值的函数。所以是的,只要你在谈论同一个对象&范围,价值就会被保留。
您可能想重新考虑“JavaScript中没有继承”。它使用原型继承,比传统的基于类的继承更加灵活。 – RobG 2013-04-23 03:32:47
@RobG如果您指的是原型的克隆/链接,即使重新思考也不会帮助我将被重写的属性视为继承对象。 – loxxy 2013-04-23 03:47:03
我指的是在ECMAScript中实现的[原型继承](http://www.ecma-international.org/ecma-262/5.1/#sec-4.2.1):''每个构造函数都是一个函数,它具有名为“prototype”的属性用于实现基于原型的继承和共享属性“'。很明显,JavaScript中有继承(这是ECMAScript的实现)。 – RobG 2013-04-23 04:04:28
- 1. 限制变量范围
- 2. Javascript中的范围/闭包 - 如何更新全局变量?
- 3. JavaScript中的变量范围
- 4. Javascript中的变量范围
- 5. JavaScript中的变量范围
- 6. javascript中的变量范围
- 7. javascript中的变量范围
- 8. JavaScript中变量的范围
- 9. javascript中的范围变量
- 10. 限制请求变量的范围
- 11. javascript闭包不保留来自外部范围的变量值
- 12. JavaScript中的范围和闭包问题
- 13. groovy:超类中的闭包中的变量范围(MissingPropertyException)
- 14. 我该如何限制Javascript计数器变量的范围?
- 15. 仅从视图中通知范围变量是否为函数?
- 16. Javascript - 变量范围
- 17. javascript变量范围
- 18. 范围JavaScript变量?
- 19. 范围JavaScript变量
- 20. JavaScript的变量范围
- 21. 的CoffeeScript/JavaScript变量范围
- 22. 范围该JavaScript变量的
- 23. JavaScript的变量范围
- 24. Javascript范围和闭包,变量保持其值
- 25. 是否可以限制javascript函数的范围?
- 26. javascript中的封闭范围
- 27. 的Javascript闭包和内部范围
- 28. 全局变量的“static”关键字 - 限制范围是什么?
- 29. 封闭本地范围变量与全局范围变量 - Python
- 30. 的Javascript:“闭包”变量
关闭对范围没有影响,它们是范围的结果。 – RobG 2013-04-23 03:09:24
[JavaScript关闭如何工作?]的可能重复(http://stackoverflow.com/questions/111102/how-do-javascript-closures-work) – 2013-04-23 03:10:07
你是什么意思“从函数继承”? – Sebas 2013-04-23 03:13:37