var Foobar = function() {};
Foobar.prototype.clickDetails = function() {
$("#foobar").html("test");
}
and
var Foobar = function () {
return {
clickDetails: function () {
$("#foobar").html("test");
}
};
}();
Run Code Online (Sandbox Code Playgroud)
我想知道因为后者是现有的但是我无法让它与Jasmine合作并且我从头开始编写第一个.这两者有什么区别?
因为你有()你的第二个例子结束(谢谢你,BERGI!),您执行的是第二个函数立即和存储结果在Foobar.因此,您的第一个示例创建了一个可用于创建对象的函数new(可以重用单个副本clickDetails),第二个示例创建一个非函数对象.
如果你没有拥有()你的第二个例子,比如结束:
var Foobar = function () {
return {
clickDetails: function () {
$("#foobar").html("test");
}
};
}; // <== No () here
Run Code Online (Sandbox Code Playgroud)
......然后会有两个不同之处:
在您的第一个示例中,只有一个 clickDetails函数由通过new Foobar()(通过原型链)创建的所有对象共享.在第二个示例中,clickDetails每次调用都会创建一个新函数Foobar().
在第一个示例中,您通过var obj = new Foobar();(使用new关键字)创建对象.在你的第二个,只是var obj = Foobar();(虽然你可以使用new关键字,它没有有用的效果,并具有误导性).
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |