次のコードでは:
<script type="text/javascript">
var i = 10;
function Circle(radius) {
this.r = radius;
this.i = radius;
}
Circle.i = 123;
Circle.prototype.area = function() { alert(i); }
var c = new Circle(1);
var a = c.area();
</script>
何が警告されていますか? 答えはこの質問の最後にあります。
i
アラート呼び出しでは、ローカル変数 (存在する場合) またはグローバル変数のいずれかを参照していることがわかりました。ローカルもグローバルも定義されていない場合でも、インスタンス変数またはクラス変数になる方法はありません。インスタンス変数を参照するにi
は が必要this.i
で、クラス変数を参照するi
には が必要Circle.i
です。これは、ほとんどすべてのオブジェクト指向プログラミング言語に実際に当てはまりますか? 例外はありますか?ローカルもグローバルもない場合、インスタンス変数を検索してからクラス変数のスコープを検索する場合はありますか? (または、この場合、それらはスコープと呼ばれますか?)
答えは: 10 が警告されています。