zgzczzw 2014-04-22
这带来的好处是内部函数可以访问定义它们的外部函数的参数和变量。
首先,我们来构造一个简单的对象。
代码如下:
var testObj = { value: 10, add: function(inc){ this.value += (typeof inc === "number") ? inc : 1; } }; testObj.add(); testObj.value; // 11 testObj.add(2); testObj.value; // 13
代码如下:
var testObj = (function(){ var value = 10; return { add: function(inc){ value += (typeof inc === "number") ? inc : 1; }, getValue: function(){ return value; } }; })(); testObj.add(); testObj.getValue(); // 11 testObj.add(2); testObj.getValue(); // 13
我们再继续看一个构造函数调用的例子。
代码如下:
var MyObj = function(str){ this.status = str; }; MyObj.prototype.getStatus = function(){ return this.status; }; var obj = new MyObj("javascript"); obj.getStatus(); // "javascript"
代码如下:
var obj = function(status){ return { getStatus: function(){ return status; } }; }; var myObj = obj("javascript"); myObj.getStatus(); // "javascript"