nderscore.js源码
Underscore.js 没有对原生 JavaScript 对象进行扩展,而是通过调用 _() 方法进行封装,一旦封装完成,原生 JavaScript 对象便成为一个 Underscore 对象。
判断给定变量是否是对象
_.isObject = function(obj) {
var type = typeof obj;
return type === 'function' || type === 'object' && !!obj;
};
这是underscore.js 的判断给定变量是否是object 的一段源码。 我们知道typeof 会返回如下六个值:
1. 'undefined' --- 这个值未定义;
2. 'boolean' --- 这个值是布尔值;
3. 'string' --- 这个值是字符串;
4. 'number' --- 这个值是数值;
5. 'object' --- 这个值是对象或null;
6. 'function' --- 这个值是函数。
而&& 的优先级要高与|| 。!! 的作用相当于Boolean() ,将其转换为布尔值。
判断给定值是否是DOM元素
_.isElement = function(obj) {
return !!(obj && obj.nodeType === 1);
};
同样!! 相当于Boolean() 的作用,nodeType === 1 则说明是元素节点,属性attr 是2 ,文本text 是3
<body>
<p id="test">测试</p>
<script>
var t = document.getElementById('test');
alert(t.nodeType);
alert(t.nodeName);
alert(t.nodeValue);
</script>
</body>
firstChild 属性
var t = document.getElementById('test').firstChild;
alert(t.nodeType);
alert(t.nodeName);
alert(t.nodeValue);
文本节点也算是一个节点,所以p的子节点是文本节点,所以返回3
|