有人可以为我解释这些代码(关于JavaScript和HTML5)吗?

时间:2011-11-10 22:56:33

标签: 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扩展程序的后台页面。任何想法或提示都将受到高度赞赏。

2 个答案:

答案 0 :(得分:5)

window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder;

这表示将window.BlobBuilder设置为已经设置的内容,如果它设置的是真实的;如果它当前设置为false,则将其设置为window.WebKitBlobBuilder。这是一种通用方法,用于在变量尚未具有真值的情况下为变量赋值。 Truthy值是任何非假值的值,falsey值是

  • null
  • undefined
  • false
  • ''
  • 0
  • NaN

下一行使用类似的语法

Blob.prototype.slice = Blob.prototype.slice || function(start, length) {
    return this.webkitSlice(start, start + length);
}

如果当前值为真,则将slice原型对象上的Blob函数设置为自身,或者设置为将使用{{1}上定义的webkitSlice函数的函数(我假设在这个例子中将this)。

答案 1 :(得分:1)

我对皮肤的深刻理解:

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.BlobBuilder和{{的名称1}}。例如,Blob.prototype.slice会替换Chrome 12或更高版本中的window.WebKitBlobBuilder