有人可以为我解释这些代码(关于JavaScript和HTML5)吗?
<script>
window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder;
Blob.prototype.slice = Blob.prototype.slice || function(start, length) {
return this.webkitSlice(start, start + length);
}
</script>
这些代码来自Chrome扩展的后台页面。任何想法或提示将不胜感激。有人可以为我解释这些代码(关于JavaScript和HTML5)吗?
window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder;
此说成立window.BlobBuilder
什么它已经被设置到任何是否被设定为是truthy;如果它现在设置为falsey,则将其设置为window.WebKitBlobBuilder
。如果它没有真值,则这是一种通用方法,用于为变量赋值。 Truthy值是什么,都没有falsey值,而falsey值
null
undefined
false
''
0
NaN
下一行使用类似的语法
Blob.prototype.slice = Blob.prototype.slice || function(start, length) {
return this.webkitSlice(start, start + length);
}
这设置Blob
原型对象上的slice
函数要么本身如果当前值是truthy,或者一个功能,将使用上this
定义的webkitSlice
函数(其我认为在这个例子中将是WebKitBlobBuilder
)。
我肤浅的理解:
window
是一个对象表示在浏览器打开的窗口/标签。有关详细信息,请参阅w3schools.com 窗口对象部
window.BlobBuilder
装置BlobBuilder
是对象window
的方法,并且它用于创建blob
,它是用于在Web应用程序来引用二进制数据对象。
http://code.google.com/apis/gears/api_blob.html
http://dev.w3.org/2006/webapi/FileAPI/#dfn-Blob
这些线被用于定义方法/函数window.BlobBuilder
和Blob.prototype.slice
,使得它们具有不同的web浏览器,其可具有不同的名称或用于window.BlobBuilder
和Blob.prototype.slice
没有名字兼容。例如,window.WebKitBlobBuilder
将取代Chrome 12或更高版本中的window.BlobBuilder
。