Javascript getter和setter——为什么它能工作
Javascript getters and setters - why does it work?
我遇到了以下代码。它有效,但我不知道为什么。
app.factory('myService', function() {
var savedData = {}
function set(data) {
savedData = data;
}
function get() {
return savedData;
}
return {
set: set,
get: get
}
});
函数返回一个对象,该对象由两个函数set()
和get()
组成。但它本身并没有返回函数,那么为什么它还能工作呢?变量savedData
不应该超出范围吗?或者我应该把savedData
看作Java中用new
关键字在堆上分配的变量吗?只要我的代码在某个地方引用了它,它就不会停止存在?
您需要深入了解JavaScript才能理解它。但我可以简单地向你解释一下:
-
savedData
与函数定义在同一级别,因此它们可以从closure
内部使用它。 -
函数作为
reference
传递,因此指向函数的指针被复制并指向该函数,即使是从另一个字段。 -
与
return
语句相同:它可以使用get
和set
函数,因为它们在它的可见性范围内。
点击此处阅读更多:
https://developer.mozilla.org/en/docs/Web/JavaScript/Closures
javascript 中的值类型引用类型对象
相关文章:
- 为什么这在IE中的工作方式与在Firefox中不同
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- 有时 array.length 只在 .push() 之后工作(为什么?)
- Javascript don'刷新页面后无法工作-为什么
- Jquery简单脚本只能在本地工作.为什么?像Javascript翻译
- 可以't让jQuery循环插件工作为什么
- jQuery animate()不工作.为什么?
- window.onload没有'I don’我不能一直工作.为什么?
- Rails自动完成可以在父形式中工作,但不能在嵌套形式中工作.为什么
- LESS不能在IE11中工作-为什么
- ECMAScript的承诺.all方法与jQuery.Deferred一起工作.为什么
- 防止LinkButton post回OnClientClick不工作.为什么
- JavaScript toUpperCase不工作.为什么
- html5:帆布.getImageData不能正常工作-为什么
- javascript的内联样式更改不能在移动浏览器(chrome/dolphin/android)上工作:为什么?
- 为什么我的幻灯片不能工作?为什么我的照片消失了
- jQuery验证在服务器中不起作用!在本地工作.为什么?
- 单页导航无法正常工作.为什么
- AJAX: error(已弃用!)工作,而failed不工作.为什么
- d3选择器:可以在代码中工作,但不能在控制台中工作.为什么