JavaScript闭包上下文的其他属性发生了什么
What happens with the other properties of a JavaScript closure context ?
我会尽可能清楚地说明我的问题,所以:
有很多博客和教程解释闭包,但我没有设法弄清楚的是,从闭包得到创建的上下文的其他属性发生了什么?jsFiddle
function func(){
this.context_field = "context_field";
this.context_method = function(){
console.log("context method");
};
func = function(param, change){
if(typeof(change) === 'undefined'){
//......
console.log(param + " " + context_field + " from original func - closure'n'n");
//.....
}
return func;
};
func()("Init finished and call");
func("Call again", "");
在这个例子中,没有创建上下文,因为函数'func'内部的关键字'this'指的是window(全局对象)。
要创建一个上下文,像这样声明变量:
var context_field = "context_field";
var context_method = function(){
console.log("context method");
};
因此,创建闭包的上下文的其他属性是活的,可以在闭包内部调用,但要使它们在外部可用,唯一的方法是返回它们。
function func(){
var context_field = "context_field";
var context_method = function(){
console.log("context method lives on");
};
func = function(param){
console.log(param + " func and " + context_field);
return context_method;
}
return func;
};
func()("Init finished and call");
func("Call again")();
相关文章:
- 为什么属性存在于对象实例上,即使其原型发生了更改
- Javascript函数 - 通过引用复制,但这里发生了什么
- 套接字发生了什么's在'断开连接'事件(服务器端)
- 这段代码中发生了什么
- Wamp没有识别出我的代码发生了更改
- 如何检查输入框值在使用淘汰之前是否发生了更改
- 通过它访问HTML元素's id DIRECTLY-这里发生了什么
- window.opener引用在Java 1.7.0_04-b20中从Applet重定向期间发生了更改,但在1.7.0_
- 如何知道JS对象属性的值在哪一行发生了更改
- 查找表单的哪些特定部分在输入时发生了更改
- JavaScript's数组过滤器函数在没有分配函数的情况下使用-这里发生了什么
- 起重行为在铬 48 和 49 之间发生了变化
- 这个JavaScript函数中发生了什么
- 我的输入字段听到除回车之外的每个“键下”事件.我有一个日期选择器,不确定发生了什么
- isPrototypeOf 说不,但实例说是——发生了什么
- 找出 Vue.js 深度自定义指令中哪个属性发生了变化
- 构造函数的属性发生了什么变化
- Javascript纯对象:这个属性发生了什么?
- JavaScript闭包上下文的其他属性发生了什么
- 如何知道哪个对象属性发生了更改