如何理解JavaScript中的类实例提供的每个行为?

时间:2017-09-27 15:58:16

标签: javascript

我无法理解console.log的最后输出。

打印:

constructor  -  ƒ Array() { [native code] }
speak  -  undefined
undefined

1)为什么说话 - 未定义? 2)为什么有第三个输出线 - 只是 - 未定义?从哪里来的?

class Bar { 
    speak() { 
        let text = 'test';
        alert(text);
        return text;
    } 
}
var test = new Bar;

z = Object.getOwnPropertyNames(Object.getPrototypeOf(test));
console.log(typeof z, " - ", z);

console.log(z.forEach(function(e) { console.log(e, " - ", z[e]); }));

请帮忙。谢谢!

1 个答案:

答案 0 :(得分:1)

您正在检查z[e]而不是test[e]z是一个属性名称数组,并且数组没有speak属性,这与Bar对象不同,后者具有speak属性。

这解释了speak - undefined行。最终的独立undefinedconsole.log本身的返回值:Chrome/Firefox console.log always appends a line saying undefined