1

我很好奇它是如何工作的这个结构。当我从 Javascript 访问 navigator.mimetypes 时,我正在访问一个对象。

>>> typeof(navigator.mimeTypes)
"object"

该对象具有对象列表。

navigator.mimeTypes[Object_0, Object_1, Object_2, ...]

>>> typeof(navigator.mimeTypes[0])
"object"

例如,我可以检索第一个对象:

navigator.mimeTypes[0]

MimeType { constructor=MimeType, enabledPlugin=Plugin, type="application/x-vnd.google.update3webcontrol.3"}

谁能解释我为什么这是有效的?

>>> navigator.mimeTypes["application/x-shockwave-flash"]

MimeType { constructor=MimeType, type="application/x-shockwave-flash", description="",more...}

我的意思是为什么我能够通过 ["application/x-shockwave-flash"] 找到指定的对象??

javascript 对我来说将是一个新世界:)

4

2 回答 2

4

navigator.mimeTypes返回一个对象MimeTypeArray,它不是传统的 JavaScript 数组,而是一个具有类似 Array 属性的对象,您可以通过索引或名称访问它的属性。

编辑:当您使用时,navigator.mimeTypes['someType']您将其视为MimeTypeArray哈希映射,它已someType映射到MimeType数组中的对象,该对象也具有type与键相同的值的属性。这是 DOM 中的一个奇怪对象(技术上不是 JavaScript),您通常不会看到很多这样的对象。

于 2012-12-18T13:50:22.023 回答
0
function GetMimeTypes() {
    var message = "";
    // Internet Explorer supports the mimeTypes collection, but it is always empty
    if (navigator.mimeTypes && navigator.mimeTypes.length > 0) {
        var mimes = navigator.mimeTypes;
        for (var i=0; i < mimes.length; i++) {
            message += "<b>" + mimes[i].type + "</b> : " + mimes[i].description + "<br />";
        }
    }
    else {
        message = "Your browser does not support this example!";
    }
    var info = document.getElementById ("login_info");
    info.innerHTML = message;
}
GetMimeTypes();
于 2015-03-17T19:41:52.853 回答