有人可以为我解释这些代码(关于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.BlobBuilderBlob.prototype.slice,使得它们具有不同的web浏览器,其可具有不同的名称或用于window.BlobBuilderBlob.prototype.slice没有名字兼容。例如,window.WebKitBlobBuilder将取代Chrome 12或更高版本中的window.BlobBuilder