我想将JavaScript对象的创建与使用它的代码分离,以便我可以灵活地将一个对象实现替换为具有相同签名的其他对象实现,而不会触及大部分代码.为了实现这一点,我想出了Repository和Factory Method的概念来创建对象.这是实施:
//The Factory Method
function ObjectFactory() {}
ObjectFactory.create = function (o) {
var args = [].slice.call(arguments, 1);
function F() {}
F.prototype = o.prototype;
var instance = new F();
o.apply(instance, args);
return instance;
};
//The Repository
var Repository = {
'invitation': Invitation,
'message': Message
};
//Usage
var inv = ObjectFactory.create(Repository["invitation"], "invitation", "invitation body", "Sender");
var msg = ObjectFactory.create(Repository["message"], "message", "message body");
var inv2 = ObjectFactory.create(Repository["invitation"], "invitation2", "invitation body2", "Sender");
Run Code Online (Sandbox Code Playgroud)
这个模式对我有用,但在我继续在我的项目中实现这个代码之前,我想知道是否存在任何陷阱(模式创建对象失败,性能瓶颈 - 如果我将创建5到10个200到1000的对象使用这种方法的代码行.我在使用服务器端代码很长一段时间后回到JavaScript,所以我对我的解决方案不是很有信心.另外,我本可以使用ES5 Object.create,但客户现在仍然使用IE8和FF3.6浏览器.
谢谢
SPDiagnosticsService无法使用共享点Web应用程序.在我调用以下代码后,我在ULS日志中没有任何消息.
SPDiagnosticsService.Local.WriteTrace(10001, new SPDiagnosticsCategory("Test", TraceSeverity.High, EventSeverity.Error), TraceSeverity.High, "Test Mesage", null);
Run Code Online (Sandbox Code Playgroud)
但是,当我从控制台应用程序调用相同的代码时,它能够写入日志,我可以在ULS日志中看到这些消息.
如何使其从Web应用程序中运行?