javascript如何获取属性值

javascript如何获取属性值,javascript,Javascript,通过以下代码,我可以在chrome浏览器中获得插件对象: nav = window.navigator; detectPlugin = function(pluginName, mimeType) { return nav.plugins && nav.plugins[pluginName] && nav.mimeTypes && nav.mimeTypes[mimeType] && nav.mimeTypes[mim

通过以下代码,我可以在chrome浏览器中获得插件对象:

nav = window.navigator;
detectPlugin = function(pluginName, mimeType) {

    return nav.plugins && nav.plugins[pluginName] && nav.mimeTypes &&   nav.mimeTypes[mimeType] && nav.mimeTypes[mimeType].enabledPlugin ? nav.plugins[pluginName] : false;
};
obj = detectPlugin('Shockwave Flash', 'application/x-shockwave-flash');
我能看穿obj的属性

Object.keys(obj)
那是

["0", "1", "length", "description", "filename", "name"]
或者我可以通过chrome控制台看到这些:

Plugin {0: MimeType, 1: MimeType, length: 2, description: "Shockwave Flash 13.0 r0", filename: "libpepflashplayer.so", name: "Shockwave Flash", item: function…}
这是我不明白的,如果我输入

obj['application/x-shockwave-flash']
我明白了

MimeType {enabledPlugin: Plugin, description: "Shockwave Flash", suffixes: "swf", type: "application/x-shockwave-flash"}
我知道obj[0]是'MimeType'的属性,但我不知道为什么“obj['application/x-shockwave-flash']”会得到这个属性

任何帮助都会很好

只返回

给定对象自身的可枚举属性

i、 e.如果它是继承的或不可枚举的,您将看不到它


属性是可枚举的意味着什么

在JavaScript中,您可以将其视为类似于“属性对循环可见”的意思

继承财产意味着什么

对象从其原型继承属性和方法,这意味着您可以拥有非常通用的对象,例如,
{}instanceof Object;//true
和非常复杂的函数,如
d=new Date()
,其中
d instanceof Date;//true
但它仍然包含来自更通用对象的所有内容,即
d instanceof Object;//正确


考虑一下这一点(假设IE 9+)


MDN页面可能有助于理解可枚举性和所有权

+1,尽管这需要IE>8。另外,
enumerable
默认为
false
IIRC。
var o = {};
Object.defineProperty(o, 'foo', {value:"bar", enumerable:false});
Object.keys(o); // []
o.foo; // "bar"
navigator.plugins[0].hasOwnProperty('application/x-shockwave-flash'); // true

Object.getOwnPropertyDescriptor(
    navigator.plugins[0],
    'application/x-shockwave-flash'
);
//Object {value: MimeType, writable: true, enumerable: false, configurable: true}