正在向构造函数添加作用域变量
Adding scope variable to a constructor
我正试图在javascript上创建一个类似类的体系结构,但有一点停滞不前。这是代码:
var make = function(args) {
var priv = args.priv,
cons = args.cons,
pub = args.pub;
return function(consParams) {
var priv = priv,
cons = args.cons;
cons.prototype.constructor = cons;
cons.prototype = $.extend({}, pub);
if (!$.isFunction(cons)) {
throw new Hata(100001);
}
return new cons(consParams);
}
};
我试图在返回的函数对象的作用域和cons.prototype的对象作用域上添加priva变量,但我做不到;
以下是make对象的用法:
var myClass = make({
cons: function() {
alert(this.acik);
alert(priv.gizli);
},
pub: {
acik: 'acik'
},
priv: {
gizli: 'gizli'
}
})
myObj = myClass();
PS:我已经使用了外部变量来演示我想做什么。我知道javascript函数结构的私有变量语法。但我需要一个解决方案来更改(添加私有变量)将由"新"(我忘记了模式名称)实例化模式使用的函数的范围。
附言:请原谅我的英语。。。
如果你追求类结构,你真的应该遵循以下模式:
function MyClass(arg){};
重要提示:当您将内部闭包的var名称设置为与包含外部闭包的名称相同时,您将无法再访问具有相同名称的原始外部闭包var。
另一方面,如果您需要访问外部闭包vars,则无需设置具有相同名称的内部闭包vars。只需使用vars,就好像它们在内部闭合中一样。
var make = function(args) {
var priv = args.priv,
cons = args.cons,
pub = args.pub;
return function(consParams) {
var someThing = priv,
sElse = args.cons;
}
};
//如果您需要将var或私有变量添加到名称为cons的函数对象中:如下所示,只需像添加其他函数对象一样添加即可。
var myClass = make({
cons: function() {
var myPrivateVariable = 'private';
alert(this.acik);
alert(priv.gizli);
},
pub: {
acik: 'acik'
},
priv: {
gizli: 'gizli'
}
})
myObj = myClass();
如果您试图复制类结构,Javascript中的常见方法如下:
//Constructor
function MyClass(myParam){
this.myParam = myParam
}
MyClass.prototype.myMethod = function(){
alert(this.myParam); //retreives the "class" instance variable myParam
}
//Instantiation
var firstMyClass = new MyClass(7);
firstMyClass.myMethod(); //alerts 7
请注意,在添加到原型的函数中,这将是对MyClass实例的引用。如果你想制作私人变量,你可以从Javascript专家Douglas Crockford那里查看这个链接:http://javascript.crockford.com/private.html
相关文章:
- 当我更新另一个作用域变量时,作用域变量会自动更新
- 如何在隔离作用域指令中访问此作用域变量
- 正在向构造函数添加作用域变量
- 如何在angularjs中将多个作用域变量传递到自定义指令中
- 作用域变量未从状态父控制器继承到子控制器
- 插槽:访问作用域变量
- 在另一个作用域变量中使用AngularJS作用域变量
- 在Angular.js中通过检查作用域变量进行过滤
- 如何更新作为属性传入的作用域变量
- Node.js中的垃圾收集作用域-变量将保持设置状态多长时间
- 从$http.get调用更新Angular作用域变量
- AngularJS ui路由器:访问子作用域变量
- 访问AngularJS中函数中的作用域变量
- 为什么Angular 1.5双向绑定在将作用域变量传递给组件绑定时失败
- 修改作用域变量后,未更新作用域绑定
- 控制器作用域变量在刷新之前未加载
- 将Angular作用域变量的字符串描述传递给指令
- 将内部作用域变量绑定到外部“模板”
- 无法在 $.post 回调中设置作用域变量
- 如何从在 JS 中用作参数的匿名函数中分配外部作用域变量