如何复制(新实例)闭包函数
How to make copies (new instances) of a closure function?
我有一个对象/函数/闭包(我认为是这三个?),我需要将它的单独实例应用于页面上的多个元素。
var NS = NS || {};
NS.PLAJAX = function(){
var pub = {};
var self = this;
pub.Init = function(FormRef){
// do stuff
};
self.aPrivateFunction = function(){
// do stuff
}
return pub;
}();
// Apply a *copy* to each element with the given class
$(function(){
$('.el-form-wrapper').each(function(index, Element){
// Attempt #1
NS.PLAJAX.Init(Element); // Doesn't make copies!
//OR, Attempt #2
var Newbie = new NS.PLAJAX(); // Throws a "not a constructor" error
Newbie.Init(Element);
});
});
如何在每个元素上获取此闭包/对象的新实例?
你得到的只是一个对象。 但是,要使用 new
关键字,您需要一个函数(构造函数)。
无需从构造函数返回任何内容。 new
关键字创建一个新对象,使用该新对象调用该函数作为 this
,然后返回它。 公共方法应该分配给this
(self
)的属性,私有方法应该是局部变量。 你最终会得到这样的结果:
var NS = NS || {};
NS.PLAJAX = function(){
var self = this;
self.Init = function(FormRef){
// do stuff
};
var aPrivateFunction = function(){
// do stuff
}
};
// Apply a *copy* to each element with the given class
$(function(){
$('.el-form-wrapper').each(function(index, Element){
var Newbie = new NS.PLAJAX();
Newbie.Init(Element);
});
});
我已经尝试过了,它对我有用,希望这对你有用
var NS = NS || {};
NS.PLAJAX = function(){
var pub = {};
var self = this;
pub.Init = function(FormRef){
alert(FormRef);
};
self.aPrivateFunction = function(){
alert("private");
}
return pub;
};
访问对象 NS
$(function(){
$('.el-form-wrapper').each(function(index, Element){
var a=NS.PLAJAX();
console.log(typeof(a));
a.Init("gg"); // Doesn't make copies!
//OR, Attempt #2
var Newbie = new NS.PLAJAX(); // Throws a "not a constructor" error
Newbie.Init("ff");
});
});
查看演示
相关文章:
- 在underscorejs模板中使用闭包
- setTimeout可以与闭包内的函数一起使用吗
- 附加到原型属性的Do函数没有闭包
- 使用闭包共享构造函数参数
- 不需要的Javascript效果:原型在实例之间共享闭包
- 为什么我只能在嵌套闭包链的第一个实例中声明变量
- 如何复制(新实例)闭包函数
- 使用闭包编译器正确键入实例变量
- Javascript:在闭包中,私有成员(var)可以在实例化后添加吗
- javascript中的闭包与c++中的类实例(它有一个私有成员和一个公共方法)相当吗
- 对象实例vs闭包
- 闭包中的Javascript实例化.如何使工厂和模型独立
- 改变“;var”;在创建新实例的构造函数闭包内部
- 具有两个实例化的Javascript闭包
- JavaScript闭包问题:为什么第二次调用outerFn会创建一个新的outerVar实例?
- JavaScript闭包问题:为什么第二次调用outerFn会创建一个新的outerVar实例?
- 对象实例化为"";新的";from闭包不能直接访问返回对象的属性
- Javascript::在闭包中生成新变量,并通过对象实例使用它
- 是为每个嵌套函数创建的单独闭包实例
- 闭包和多个实例