underscore 版本1.83 最主要的乙個特性是鏈式呼叫
_([1,2,3]).each(console.log)
// 1 0 (3) [1, 2, 3]
// 2 1 (3) [1, 2, 3]
// 3 2 (3) [1, 2, 3]
我們先簡單的實現鏈式呼叫的功能
實現 _.each([1,2,3],console.log) 是很簡單的 ,直接_.each函式就搞定了
var _ = function(obj) ;
_.each = function(obj, iteratee)
return obj;
};_.prototype.each = function() ;
_.each([1,2,3],console.log)
_([1,2,3]).each(console.log)
但是 我們怎麼實現下面的功能呢?
_([1,2,3]).map(function(a)).each(console.log) //報錯
// 2 0
// 4 1
// 6 2
在用underscore的時候我們發現有個_.chain方法,可以實現鏈式連寫
_.chain([1,2,3]).map(function(a)).each(console.log)
// 2 0
// 4 1
// 6 2
var _ = function(obj) ;
_.each = function(obj, iteratee)
return obj;
};_.map = function(obj, iteratee, context)
return results;
};var chainresult = function(instance, obj) ;
_.chain = function(obj) ;
_.prototype.each = function() ;
_.prototype.map = function() ;
_.prototype.chain = function() ;
_.chain([1,2,3]).map(function(a)).each(console.log)
function mixin();
});}
underscore原始碼閱讀整理
underscore是我閱讀的第乙份原始碼,這份 比較小巧,只有1500行,我閱讀的版本是1.8.3.underscore裡封裝了很多功能性的函式,和jquery不同,我覺得jquery的特點是對針對dom,而underscore裡都是基於js的功能性函式,比如each,map等等。以下內容僅是我閱...
underscore 原始碼閱讀 四
keys one two three 檢索object擁有的所有可列舉屬性的名稱。我們知道,在js中本就提供了幾個方法如for.in.object.keys來遍歷物件的屬性,為什麼underscore還是要封裝乙個api呢?這其實是為相容ie9版本下的乙個bug做的封裝 在ie9以下的版本中,以下 ...
underscore原始碼剖析之整體架構
最近打算好好看看underscore原始碼,乙個是因為自己確實水平不夠,另乙個是underscore原始碼比較簡單,比較易讀。本系列打算對underscore1.8.3中關鍵函式原始碼進行分析,希望做到最詳細的原始碼分析。今天是underscore原始碼剖析系列第一篇,主要對underscore整體...