面向對象版本:預先植入的命令接收者被當成對象的屬性保存起來
var Tv = {
open: function() {
console.log('open tv');
},
close: function() {
console.log('close tv');
}
};
var OpenTvCommand = function(receiver) {
this.receiver = receiver;
}
OpenTvCommand.prototype.excute = function() {
this.receiver.open();
}
OpenTvCommand.prototype.undo = function() {
this.receiver.close();
}
var setCommand = function(command) {
document.querySelector('#excute').onclick = function() {
command.excute();
};
document.querySelector('#undo').onclick = function() {
command.undo();
};
};
setCommand(new OpenTvCommand(Tv));
閉包版本:命令接收者被封閉在閉包形成的環境中
var Tv = {
open: function() {
console.log('open tv');
},
close: function() {
console.log('close tv');
}
};
var createCommand = function(receiver) {
var excute = function() {
receiver.open();
};
var undo = function() {
receiver.close();
};
return {
excute: excute,
undo: undo,
};
}
var setCommand = function(command) {
document.querySelector('#excute').onclick = function() {
command.excute();
};
document.querySelector('#undo').onclick = function() {
command.undo();
};
};
setCommand(createCommand(Tv));
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。