Sou*_*ter 5 javascript design-patterns
我想编写一些可以像下面代码一样使用的日志类。
// short-hand for logging.
log('log message', [other parameter]);
// full path for writing log.
log.write('log message', [other parameter]);
// print all log
log.print([optional parameter]);
Run Code Online (Sandbox Code Playgroud)
而且,它必须能够写成流畅的模式。
log.write('log message').print();
Run Code Online (Sandbox Code Playgroud)
最后,应使用以下代码对其进行重置。
log = new log();
Run Code Online (Sandbox Code Playgroud)
谢谢,
让我们先将其实现为普通对象,然后添加一些其他语法:
var log = {};
log.write = function() {
// stuff...
return this;
};
log.print = function() {
// stuff...
return this;
};
log.reset = function() {
// stuff
return this;
};
Run Code Online (Sandbox Code Playgroud)
由于函数也是一个对象,它可以具有属性,因此您可以将var log = {};, 替换为重定向到的函数log.write。
function log() {
return log.write.apply(log, arguments);
}
Run Code Online (Sandbox Code Playgroud)
最后,对于自重置语法,您可以检测新实例,但不是创建新对象,而是重置日志并将相同的对象交还!
所以现在日志函数将如下所示:
function log() {
if (this instanceof log) {
return log.reset.apply(log, arguments);
}
return log.write.apply(log, arguments);
}
Run Code Online (Sandbox Code Playgroud)
你可以看看jsFiddle看看它是否有效。警告:该页面上有很多alert()!