添加范围变量构造(Adding scope variable to a constructor)

2019-09-22 01:48发布

我想创建于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的范围,但我不能使它;

这里是化妆对象的用法:

var myClass = make({
    cons: function() {
        alert(this.acik);
        alert(priv.gizli);
    },
    pub: {
        acik: 'acik'
    },
    priv: {
        gizli: 'gizli'
    }
})
myObj = myClass();

PS:好吧,我已经使用了外瓦尔只是证明了我想做的事情。 我知道javascript函数结构的私有变量语法。 但我需要改变(增加私人增值经销商),这是怎么回事功能的范围solutution由一个“新”(我忘图案名)的实例化模式来使用。

PS:请原谅我的英语...

Answer 1:

如果你的类结构后,你真的应该遵循的模式:

function MyClass(arg){};

重要提示:当你永远设置内关闭您的VAR名称相同的名称,因为它是一个包含外封你不再有访问原始封外具有相同名称的增值经销商。

在另一方面,如果你需要访问外部封锁瓦尔没有必要设置内关闭具有相同名称的增值经销商。 仿佛他们是:在内部封刚刚与增值经销商合作。

var make = function(args) {
    var priv = args.priv,
        cons = args.cons,
        pub = args.pub;
    return function(consParams) {

        var someThing = priv,
            sElse     = args.cons;
    }
};

//如果你需要一个VAR或私有变量添加到名为利弊函数对象:当你知道了下面只是添加它像任何其他函数对象。

var myClass = make({
    cons: function() {
         var myPrivateVariable = 'private';
        alert(this.acik);
        alert(priv.gizli);
    },
    pub: {
        acik: 'acik'
    },
    priv: {
        gizli: 'gizli'
    }
})
myObj = myClass();


Answer 2:

如果你想复制一个类状结构在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专家道格拉斯·克罗克福德此链接: http://javascript.crockford.com/private.html



文章来源: Adding scope variable to a constructor