我真的很新的JavaScript。你能解釋一下什麼是下面的JavaScript代碼的輸出?請儘可能詳細地解釋原因。非常感謝。以下JavaScript代碼的輸出是什麼?爲什麼?
var Foo = function(a) {
function bar() {
return a;
}
this.baz = function() {
return a;
};
};
Foo.prototype = {
biz: function() {
return a;
}
};
var f = new Foo(7);
f.bar();
f.baz();
f.biz();
結果是錯誤。 f.bar不是一個函數。這是因爲它是一個僅在Foo函數中具有作用域的本地函數。 'baz'是可用的,因爲當你執行'new Foo()'時,它是構造對象的一部分。 'f.biz()'也可用,因爲它被放置在Foo的原型中,這意味着Foo的所有實例(f都是其中之一)共享它。 – rasmeister
作爲@rasmeister說的繼續:'f.baz'返回'a'('7')的值,但是'foo.biz'返回'undefined',因爲'a'沒有用這個範圍來定義。 –