Javscript 闭包与this 需要注意的是读取this与arguments时,可能是会出问题的。 复制代码 代码如下: function hello(){ this.char = "hello,world"; function output(){ char = "I"m no hello world"; console.log(this.char); }; return output(); }
当然了这个例子并不够贴切,so,我们需要一个额外的例子来解释这个问题,下面引用一个《Javascript高级程序设计》中的一个例子,来说明这个问题。 复制代码 代码如下: var name = "The window"; var object = { name: "My Object", getNameFunc: function(){ return function(){ return this.name; } } }; object.getNameFunc()()
只是这种用法实在是,而解决方法便是保存一个临时变量that,如之前在《关于Javascript的this的一些知识》一文中所说的。 复制代码 代码如下: var name = "The window"; var object = { name: "My Object", getNameFunc: function(){ var that = this; return function(){ return that.name; } } }; object.getNameFunc()()
Javscript 闭包与读写变量 值得注意的是,如果我们没有处理好我们的变量时,我们也可以修改这些变量。 复制代码 代码如下: function hello(){ var char = "hello,world"; return{ set: function(string){ return char = string; }, print: function(){ console.log(char) } } } var say = hello(); say.set("new hello,world") say.print() // new hello world