V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ambar  ›  全部回复第 1 页 / 共 1 页
回复总数  3
2012-03-18 02:21:46 +08:00
回复了 vibbow 创建的主题 问与答 这个favicon的动态效果是怎么做出来的?
看不到效果,但能猜测是 JavaScript 操纵 DataURL
2012-02-28 20:13:57 +08:00
回复了 Livid 创建的主题 Markdown 如果 Mou 有 iPad 版本就好了
同样请求一下,使用 Mou 一周了,很喜欢。
# 相见

首先,如果看到了这个用法,它可能是出现在一些库的 enumerable 的函数实现中,操作对象是 *伪数组对象* 或 *数组对象* , this 就指向两种可能对象(因为 JavaScript 函数的 call 和 apply 方法,可以改变 this 的指向)。

# 运算符

“>>>” 是无符号右移运算符,它保证结果为非负整数,这正是 length 的值所想要的(如果运算子为NaN,length 结果将为0,在后续代码中遍历对象也不会抛出异常)。

详见 ES5 规范文档,文档的定义使得数组原型上的方法都能作用于伪数组上面:

MDN Array.prototype.map 实现参考:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map
“Let len be ToUint32(lenValue)” :http://es5.github.com/#x15.4.4.19
9.6 ToUint32 http://es5.github.com/#x9.6
11.7.3 The Unsigned Right Shift Operator http://es5.github.com/#x11.7.3

# 什么是伪数组对象(array-like object)?

// 能用数字下标存取,带有 length 属性
var o = {0:'foo',1:'bar',length:2}
var each = Array.prototype.forEach

// 如何简易地遍历伪数组
each.call(o,function(n,i){
console.log(n,i)
})

# 更普遍的样例

伪数组在 JavaScript 中常见的主要有两类:

// 经常会看到的做法,处理 NodeList 对象
each.call( document.querySelectorAll('div'), function(el){
doSomeThingWith(el)
})

// 又,处理 arguments 对象
var foo = function(){
return Array.prototype.join.call(arguments,',')
}

foo('yep','nope') === 'yep,nope'
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2781 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 01:52 · PVG 09:52 · LAX 17:52 · JFK 20:52
Developed with CodeLauncher
♥ Do have faith in what you're doing.