文档章节

underscore.js学习-一

o紫木o
 o紫木o
发布于 2017/09/07 22:25
字数 574
阅读 6
收藏 0

1.

var _ = function(obj){
        if(obj instanceof _) return obj;
        // 执行new操作时,新创建一个实例,不是obj本身,故第一个条件仍为false
        if(!(this instanceof _)) return new _(obj);
        this._wrapped = obj;
    };

2.void 运算符通常只用于获取undefined的原始值,一般使用 void(0),等同于void 0。

在使用立即执行的函数表达式时,可以利用void运算符让 JavaScript 引擎把一个函数识别成函数表达式而不是函数声明(语句)。

void function iife() {
    var bar = function () {};
    var baz = function () {};
    var foo = function () {
        bar();
        baz();
     };
    var biz = function () {};

    foo();
    biz();
}();

当用户点击一个以javascript: URI 时,浏览器会对冒号后面的代码进行求值,然后把求值的结果显示在页面上,这时页面基本上是一大片空白,这通常不是我们想要的。只有当这段代码的求值结果是undefined的时候,浏览器才不会去做这件傻事,所以我们经常会用void运算符来实现这个需求

<a href="javascript:void(0);">
  这个链接点击之后不会做任何事情,如果去掉 void(),
  点击之后整个页面会被替换成一个字符 0。
</a>
<p> chrome中即使<a href="javascript:0;">也没变化,firefox中会变成一个字符串0 </p>
<a href="javascript:void(document.body.style.backgroundColor='green');">
  点击这个链接会让页面背景变成绿色。
</a>

注意,虽然这么做是可行的,但利用javascript:伪协议来执行 JavaScript 代码是不推荐的,推荐的做法是为链接元素绑定click 事件。

3.obj.length === +obj.length

等同于 typeof obj.length == 'number' && !isNaN(obj.length),用于判断length是一个(或者可以转为)非NaN的数值

+位于其操作数前面,计算其操作数的数值,如果操作数不是一个数值,会尝试将其转换成一个数值。如果它不能解析一个值,则计算结果为 NaN

4.length = (keys || obj).length

exp1 || exp2   如果expr1能转换成true则返回expr1,否则返回expr2

exp1 && exp2   如果expr1 能转换成false则返回expr1,否则返回expr2

||和&&返回一个指定操作数的值,当第一个表达式能确定运算值时返回第一个,不能就返回第二个操作数

5.单词 :raw dense predicate cornerstone sparse aka

© 著作权归作者所有

共有 人打赏支持
o紫木o
粉丝 2
博文 40
码字总数 12013
作品 0
西安
程序员
私信 提问
underscore.js源码解析2

_.isNull(object) 如果object的值是null,返回true。 .isNull(null); => true; .isNull(undefined); => false; undefined派生自null,所以两者相等(==),但是不全等(===),所以这里如果o...

熊猫ewall
2017/06/05
0
0
GeoCouch 初体验(CouchDB的地理位置索引查询插件)

原文出处:http://blog.nosqlfan.com/html/3267.html GeoCouch是一个CouchDB的插件,提供地理位置索引的查询,我们知道CouchDB是通过MapReduce建立视图的方式来进行非动态的查询,GeoCouch通...

红薯
2011/10/18
917
2
如何封装Node.js和前端通用的模块

前端模块通常是我们开发人员为了避免和他人冲突才把模块代码放置在一个闭包中。 如何封装Node.js和前端通用的模块,我们可以参考Underscore.js 实现,他就是一个Node.js和前端通用的功能函数...

cd_ing
2014/02/17
0
0
实用JavaScript工具库--Lo-Dash

Lo-Dash是一个实用的JavaScript工具库。类似 Underscore.js

justintung
2014/04/06
1K
2
Underscore.php

Underscore 是 Underscore.js 的一个 PHP 移植版本。 示例代码: ::map(array(1, 2, 3), function($num) { return $num * 3; }); // array(3, 6, 9) ::map(array('one'=>1, 'two'=>2, 'three......

红薯
2013/12/31
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
10
0
RestClientUtil和ConfigRestClientUtil区别说明

RestClientUtil directly executes the DSL defined in the code. ConfigRestClientUtil gets the DSL defined in the configuration file by the DSL name and executes it. RestClientUtil......

bboss
今天
17
0

中国龙-扬科
昨天
2
0
Linux系统设置全局的默认网络代理

更改全局配置文件/etc/profile all_proxy="all_proxy=socks://rahowviahva.ml:80/"ftp_proxy="ftp_proxy=http://rahowviahva.ml:80/"http_proxy="http_proxy=http://rahowviahva.ml:80/"......

临江仙卜算子
昨天
10
0
java框架学习日志-6(bean作用域和自动装配)

本章补充bean的作用域和自动装配 bean作用域 之前提到可以用scope来设置单例模式 <bean id="type" class="cn.dota2.tpye.Type" scope="singleton"></bean> 除此之外还有几种用法 singleton:......

白话
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部