0

我正在寻找在 JavaScript 中实现以下用例的最佳方法(如果可能的话)。

假设我想配置一些“模型”实体。这样的配置可能是一些模式定义或一些验证规则。配置保持在“ModelDef”的范围内。

var ModelDef = new Model({ schema : { name : 'String' }, validation : {} });

然后我希望能够初始化先前定义的“ModelDef”的实例。这一次,我可能会提供一些属性及其值。

var ModelInstance = new ModelDef({ attribute1 : value1, attribute2 : value2 });

到现在为止还挺好。关键是,我想在这两种情况下都使用“new”关键字。虽然前一个(“ModelDef”)案例可以直接实现,但我想知道是否有可能获得第二个调用,它建立在第一个调用的基础上,也可以工作。

4

1 回答 1

1

不是真的,因为在 JavaScript中没有 a privateor变量这样的东西。protected如果您使用关键字,this其他实例将可以访问。但是,您可以使用关键字var来创建private无法使用.(dot)访问器访问的范围。此外,您不能将构造函数的执行实例分配给变量然后创建它的新实例,除非原始构造函数返回一个构造函数,如下面这个讨厌的例子。

function what(c){
  this.a = function(){
    return function(){
      this.b = c;
    }
  }
}
var nasty = new what('test').a();
var testit = new nasty().b;
console.log(testit);
于 2013-10-02T00:05:53.707 回答