今天閱讀了《Javascript 設計模式》的第九章亨元(Flyweight)模式,在9.13.7(110頁),經測試發現了實現jQuery.single方法的代碼有誤,錯誤代碼如下:
jQuery.single = (function(o){
var collection = jQuery([1]);
return function(element) {
// 將元素賦值給集合:
collection[0] = element;
// 返回集合:
return collection;
};
});
使用書上的示例代碼(如下)測試發現錯誤。
$('div').bind('click', function(){
//報錯:next不是一個函數
var html = jQuery.single(this).next().html();
console.log(html);
});
原因是漏了一個自調用的括號,而且參數o並沒有什麼卵用,經過修改並測試無誤,代碼如下:
jQuery.single = (function(){
var collection = jQuery([1]);
return function(element) {
// 將元素賦值給集合:
collection[0] = element;
// 返回集合:
return collection;
};
})();
希望能解決大家的疑惑。