Utility
noConflict
_.noConflict()
将_变量的控制权交还给其以前的所有者。返回对Underscore
对象的引用。
var underscore = _.noConflict(
identity
_.identity(value)
返回用作参数的相同值。在数学中:f(x)= x
这个函数看起来没用,但在整个Underscore中被用作默认迭代器。
var stooge = {name: 'moe'};
stooge === _.identity(stooge
=> true
constant
_.constant(value)
创建一个返回与_.constant的参数相同的值的函数。
var stooge = {name: 'moe'};
stooge === _.constant(stooge)(
=> true
noop
_.noop()
无论传递给它的参数如何,都返回undefined。作为可选回调参数的默认值很有用。
obj.initialize = _.noop;
times
_.times(n, iteratee, [context])
将给定的迭代函数调用n
次。使用索引参数调用iteratee的
每个调用。生成返回值的数组。
注意:这个例子使用了
面向对象的语法
。
_(3).times(function(n){ genie.grantWishNumber(n }
random
_.random(min, max)
返回最小值
和最大值
之间的随机整数,包括。如果您只传递一个参数,它将返回一个介于0和该数字之间的数字。
_.random(0, 100
=> 42
mixin
_.mixin(object)
允许您用自己的实用功能扩展Underscore。传递{name:function}定义的哈希以将您的函数添加到Underscore对象以及OOP包装器。
_.mixin{
capitalize: function(string) {
return string.charAt(0).toUpperCase() + string.substring(1).toLowerCase(
}
}
_("fabio").capitalize(
=> "Fabio"
iteratee
_.iteratee(value, [context])
生成可应用于集合中每个元素的回调。_.iteratee支持多种常用回调用例的简写语法。根据值的类型,_.iteratee将返回:
// No value
_.iteratee(
=> _.identity()
// Function
_.iteratee(function(n) { return n * 2; }
=> function(n) { return n * 2; }
// Object
_.iteratee{firstName: 'Chelsea'}
=> _.matcher{firstName: 'Chelsea'}
// Anything else
_.iteratee('firstName'
=> _.property('firstName'
下面的Underscore方法通过_.iteratee转换谓词:countBy,every,filter,find,findIndex,findKey,findLastIndex,groupBy,indexBy,map,mapObject,max,min,partition,reject,some,sortBy,sortedIndex和uniq
uniqueId
_.uniqueId([prefix])
为客户端模型或需要DOM元素的DOM元素生成一个全局唯一的ID。如果传递了前缀
,则该标识将被追加到它。
_.uniqueId('contact_'
=> 'contact_104'
escape
_.escape(string)
转义字符串以插入到HTML中,替换&,<,>,“,`和'字符。
_.escape('Curly, Larry & Moe'
=> "Curly, Larry & Moe"
unescape
_.unescape(string)
逃避的对立面,用他们未经转义的同行取代&,<,>,“,和”。
_.unescape('Curly, Larry & Moe'
=> "Curly, Larry & Moe"
result
_.result(object, property, [defaultValue])
如果named 属性
的值是一个函数,那么用该对象
作为上下文来调用它; 否则,返回它。如果提供了默认值并且该属性
不存在或未定义,则将返回默认值。如果defaultValue是一个函数,它的结果将被返回。
var object = {cheese: 'crumpets', stuff: function(){ return 'nonsense'; }};
_.result(object, 'cheese'
=> "crumpets"
_.result(object, 'stuff'
=> "nonsense"
_.result(object, 'meat', 'ham'
=> "ham"
now
_.now()
使用运行时中可用的最快方法返回当前时间的整数时间戳。用于实现定时/动画功能。
_.now(
=> 1392066795351
template
_.template(templateString, [settings])
将JavaScript模板编译为可进行渲染评估的函数。用于从JSON数据源渲染复杂的HTML数据。模板函数既可以使用<%= ...%>来插值,也可以执行任意JavaScript代码,使用<%...%>。如果你想插入一个值,并让它被HTML转义,使用<% - ...%>。在评估模板函数时,传入具有与模板的自由变量相对应的属性的数据对象。该设置参数应该是包含要覆盖的任何_.templateSettings哈希值。
var compiled = _.template("hello: <%= name %>"
compiled{name: 'moe'}
=> "hello: moe"
var template = _.template("<b><%- value %></b>"
template{value: '<script>'}
=> "<b><script></b>"
您也可以使用JavaScript代码中的打印。这有时比使用<%= ...%>更方便。
var compiled = _.template("<% print('Hello ' + epithet %>"
compiled{epithet: "stooge"}
=> "Hello stooge"
如果ERB风格的分隔符不是您的一杯茶,您可以更改Underscore的模板设置以使用不同的符号来设置内插代码。定义一个插值
正则表达式来匹配应该被内插的表达式,一个转义
正则表达式,用于匹配应该在HTML转义
后插入的表达式,以及一个评估
正则表达式,以匹配应该在没有插入到结果字符串中的情况下评估的
表达式。您可以定义或省略三者的任意组合。例如,要执行Mustache.js风格的模板:
_.templateSettings = {
interpolate: /\{\{(.+?)\}\}/g
};
var template = _.template("Hello {{ name }}!"
template{name: "Mustache"}
=> "Hello Mustache!"
默认情况下,模板
通过with语句将数据中的值放在本地作用域中。但是,您可以使用变量
设置指定单个变量
名称。这可以显着提高模板
能够呈现的速度。
_.template("Using 'with': ", {variable: 'data'}){answer: 'no'}
=> "Using 'with': no"
预编译模板在调试无法重现的错误时非常有用。这是因为预编译模板可以提供行号和堆栈跟踪,这是在客户端上编译模板时不可行的。编译模板函数中的源
属性可用于简化预编译。
<script>
JST.project = ;
</script>