Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript闭包的效果如何_Javascript_Closures - Fatal编程技术网

javascript闭包的效果如何

javascript闭包的效果如何,javascript,closures,Javascript,Closures,我正在学习javascript闭包,我读了很多关于闭包的例子,但我仍然不明白为什么我们必须使用闭包 下面是我从“好的部分”中复制的一个例子 但我想知道为什么我们不应该这样写 var myObject = function(){ var value = 0; this.increment= function(inc){ value += inc; }, this.getValue= function(){ r

我正在学习javascript闭包,我读了很多关于闭包的例子,但我仍然不明白为什么我们必须使用闭包

下面是我从“好的部分”中复制的一个例子

但我想知道为什么我们不应该这样写

    var myObject = function(){
    var value = 0;


     this.increment= function(inc){
          value += inc;
     },
     this.getValue= function(){
          return value;
     }

  };
   var obj1 =new myObject(); 
   document.write(obj1.getValue());
   obj1.increment(10);
   document.write(obj1.getValue()); 

第一次问问题,可怜的英语,原谅我

很好。这两种方法都使用闭包来包含局部变量。

当您需要访问不再在范围内的对象内的值时,闭包非常有用。使用良好部件中的代码时,变量
将在每次使用
增量
时递增,尽管函数
myObject
已返回

就闭包而言,语法是等价的

但是,如果要键入对象,则必须使用第二种语法

使用第一种语法,您将拥有:

obj1 instanceof myObject === false.
让它成为一个单身汉

而第二种语法将为您提供:

obj1 instanceof myObject === true
使您的对象成为myObject的实例

也请阅读以下内容:
obj1 instanceof myObject === true