Javascript ';新';与';应用';创建对象时
背景:我在Knockout工作,并且已经实现了一个。具体来说,我正在实现Javascript ';新';与';应用';创建对象时,javascript,knockout.js,ecmascript-6,Javascript,Knockout.js,Ecmascript 6,背景:我在Knockout工作,并且已经实现了一个。具体来说,我正在实现loadComponent和createViewModel方法,以实现依赖项注入。因此,基本上,我通过某种约定确定合适的构造函数,然后使用所需的依赖项对其调用new 我的问题是:当我有这个 function model(arg1, arg2) { this.foo = arg1; this.bar = arg2; } 以下两者之间的具体区别是什么: var instance = new model(arg1
loadComponent
和createViewModel
方法,以实现依赖项注入。因此,基本上,我通过某种约定确定合适的构造函数,然后使用所需的依赖项对其调用new
我的问题是:当我有这个
function model(arg1, arg2) {
this.foo = arg1;
this.bar = arg2;
}
以下两者之间的具体区别是什么:
var instance = new model(arg1, arg2);
以及:
两者似乎都有相同的结果。至于我的具体用例,我想做如下事情:
var instance = {};
model.apply(new Proxy(instance, handler), [arg1, arg2]);
this.foo = 'bar';
其中,handler
将转换如下内容:
var instance = {};
model.apply(new Proxy(instance, handler), [arg1, arg2]);
this.foo = 'bar';
进入:
…抽象出敲除的笨拙的可观察语法
我不确定这些差异是否会影响您的用例,但是当您调用
newmodel
时肯定会发生一些额外的事情,而model.apply不会发生这种情况。请看。如果您依赖于model.apply({}…
),并且在某个时候出现了奇怪的行为,我一点也不会感到惊讶。一般来说,我建议避免使用聪明的代码。MattBrowne的链接提供了有关new
行为的大量信息,您需要了解这些信息。感谢您的评论和链接。听起来,如果我不关心原型链(在本例中我不关心),我就没有什么可担心的。我不确定这些差异是否会影响您的用例,但当您调用新模型时肯定会发生一些额外的事情,而模型.apply
不会发生。请看。如果您依赖于model.apply({}…
),并且在某个时候出现了奇怪的行为,我一点也不会感到惊讶。一般来说,我建议避免使用聪明的代码。MattBrowne的链接提供了有关new
行为的大量信息,您需要了解这些信息。感谢您的评论和链接。听起来,如果我不关心原型链(在这种情况下我不关心),我就没有什么可担心的了。