首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Utility

noConflict

_.noConflict()

将_变量的控制权交还给其以前的所有者。返回对Underscore对象的引用。

代码语言:javascript
复制
var underscore = _.noConflict();

identity

_.identity(value)

返回用作参数的相同值。在数学中:f(x)= x

这个函数看起来没用,但在整个Underscore中被用作默认迭代器。

代码语言:javascript
复制
var stooge = {name: 'moe'};
stooge === _.identity(stooge);
=> true

constant

_.constant(value)

创建一个返回与_.constant的参数相同的值的函数。

代码语言:javascript
复制
var stooge = {name: 'moe'};
stooge === _.constant(stooge)();
=> true

noop

_.noop()

无论传递给它的参数如何,都返回undefined。作为可选回调参数的默认值很有用。

代码语言:javascript
复制
obj.initialize = _.noop;

times

_.times(n, iteratee, [context])

将给定的迭代函数调用n次。使用索引参数调用iteratee的每个调用。生成返回值的数组。

注意:这个例子使用了 面向对象的语法

代码语言:javascript
复制
_(3).times(function(n){ genie.grantWishNumber(n); });

random_.random(min, max)

返回最小值最大值之间的随机整数,包括。如果您只传递一个参数,它将返回一个介于0和该数字之间的数字。

代码语言:javascript
复制
_.random(0, 100);
=> 42

mixin

_.mixin(object)

允许您用自己的实用功能扩展Underscore。传递{name:function}定义的哈希以将您的函数添加到Underscore对象以及OOP包装器。

代码语言:javascript
复制
_.mixin({
  capitalize: function(string) {
    return string.charAt(0).toUpperCase() + string.substring(1).toLowerCase();
  }
});
_("fabio").capitalize();
=> "Fabio"

iteratee

_.iteratee(value, [context])

生成可应用于集合中每个元素的回调。_.iteratee支持多种常用回调用例的简写语法。根据值的类型,_.iteratee将返回:

代码语言:javascript
复制
// 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。如果传递了前缀,则该标识将被追加到它。

代码语言:javascript
复制
_.uniqueId('contact_');
=> 'contact_104'

escape

_.escape(string)

转义字符串以插入到HTML中,替换&,<,>,“,`和'字符。

代码语言:javascript
复制
_.escape('Curly, Larry & Moe');
=> "Curly, Larry &amp; Moe"

unescape

_.unescape(string)

逃避的对立面,用他们未经转义的同行取代&,<,>,“,和”。

代码语言:javascript
复制
_.unescape('Curly, Larry &amp; Moe');
=> "Curly, Larry & Moe"

result

_.result(object, property, [defaultValue])

如果named 属性的值是一个函数,那么用该对象作为上下文来调用它; 否则,返回它。如果提供了默认值并且该属性不存在或未定义,则将返回默认值。如果defaultValue是一个函数,它的结果将被返回。

代码语言:javascript
复制
var object = {cheese: 'crumpets', stuff: function(){ return 'nonsense'; }};
_.result(object, 'cheese');
=> "crumpets"
_.result(object, 'stuff');
=> "nonsense"
_.result(object, 'meat', 'ham');
=> "ham"

now

_.now()

使用运行时中可用的最快方法返回当前时间的整数时间戳。用于实现定时/动画功能。

代码语言:javascript
复制
_.now();
=> 1392066795351

template

_.template(templateString, [settings])

将JavaScript模板编译为可进行渲染评估的函数。用于从JSON数据源渲染复杂的HTML数据。模板函数既可以使用<%= ...%>来插值,也可以执行任意JavaScript代码,使用<%...%>。如果你想插入一个值,并让它被HTML转义,使用<% - ...%>。在评估模板函数时,传入具有与模板的自由变量相对应的属性的数据对象。该设置参数应该是包含要覆盖的任何_.templateSettings哈希值。

代码语言:javascript
复制
var compiled = _.template("hello: <%= name %>");
compiled({name: 'moe'});
=> "hello: moe"

var template = _.template("<b><%- value %></b>");
template({value: '<script>'});
=> "<b>&lt;script&gt;</b>"

您也可以使用JavaScript代码中的打印。这有时比使用<%= ...%>更方便。

代码语言:javascript
复制
var compiled = _.template("<% print('Hello ' + epithet); %>");
compiled({epithet: "stooge"});
=> "Hello stooge"

如果ERB风格的分隔符不是您的一杯茶,您可以更改Underscore的模板设置以使用不同的符号来设置内插代码。定义一个插值正则表达式来匹配应该被内插的表达式,一个转义正则表达式,用于匹配应该在HTML转义后插入的表达式,以及一个评估正则表达式,以匹配应该在没有插入到结果字符串中的情况下评估的表达式。您可以定义或省略三者的任意组合。例如,要执行Mustache.js风格的模板:

代码语言:javascript
复制
_.templateSettings = {
  interpolate: /\{\{(.+?)\}\}/g
};

var template = _.template("Hello {{ name }}!");
template({name: "Mustache"});
=> "Hello Mustache!"

默认情况下,模板通过with语句将数据中的值放在本地作用域中。但是,您可以使用变量设置指定单个变量名称。这可以显着提高模板能够呈现的速度。

代码语言:javascript
复制
_.template("Using 'with': ", {variable: 'data'})({answer: 'no'});
=> "Using 'with': no"

预编译模板在调试无法重现的错误时非常有用。这是因为预编译模板可以提供行号和堆栈跟踪,这是在客户端上编译模板时不可行的。编译模板函数中的属性可用于简化预编译。

代码语言:javascript
复制
<script>
  JST.project = ;
</script>

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com