javascript功能对象方法

问题描述:

嗨即时通讯新的JavaScript和我偶然发现了JavaScript中的这段代码。我不明白如何可以方法增量和打印定义内功能。这是否意味着创造是一个对象?javascript功能对象方法

function create() { 
    var counter = 0; 
    return { 
     increment: function() { 
      counter++; 
     }, 
     print: function() { 
      console.log(counter); 
     } 
    } 
} 
var c = create(); 
c.increment(); 
c.print(); // 1 
+0

您可以使用[在线JavaScript美化](http://jsbeautifier.org)等服务清理杂乱的代码。 – Pointy 2012-01-09 11:09:24

函数“create()”返回一个对象。它返回的对象有两个属性,“增量”和“减量”,它们都具有作为值的函数。这些函数对“create()”中定义的变量“counter”进行操作。

每次调用“create()”时都会实例化一个名为“closure”的新上下文。上下文包含“counter”变量的新副本。从调用“create()”返回的对象因此可以访问他们自己的私有“counter”实例。

+0

感谢您的答案,请原谅我的初学者问题,就像我说的新的JavaScript。 我有两个子问题为你的答案 - 什么是函数“create()”返回调用或其名称propherty, 和函数之间的区别是什么“create()”返回对象或函数javascript中的类 – 2012-01-10 12:32:02

+0

该对象并没有被特别称为任何东西;有时候人们称之为“对象字面量”。就语言而言,JavaScript中只有一种功能。任何函数都可以用作对象构造函数,但函数的实际功能可能没有多大意义。在JavaScript中使用OOP有许多不同的方案,但实际的语言机制与C++,C#或Java中的OOP不同。 – Pointy 2012-01-10 13:24:01

+0

(这里2018年当然有不同类型的功能。) – Pointy 2018-02-08 17:00:47

你的关键字关闭

JavaScript中的闭包相当覆盖,例如,在How do JavaScript closures work?