navigator.mimeTypes结构

时间:2012-12-18 13:40:40

标签: javascript

我很好奇它是如何运作这种结构的。当我从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对我来说将是一个新世界:)

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分: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();