引用。
function foo( ){ ... }
はコンパイル時に関数が定義されます。
var foo = function( ){ ... };
は代入文の実行時に関数が定義されます。
はコンパイル時に関数が定義されます。
var foo = function( ){ ... };
は代入文の実行時に関数が定義されます。
引用(エラーになるケース)
var foo = new Foo();
foo.greet();
function Foo(){ };
Foo.prototype.greet = function (){ alert('hi') };
var foo = new Foo();
foo.greet();
Foo.prototype.greet = function (){ alert('hi') };
function Foo(){ };
なんでエラーになるのか。
Foo.prototype.greet = ...
は代入文で、実行時に関数が定義されるけど、
その定義がされる前に
foo.greet();
を呼んでしまっているから、という事か。
メソッドの代入は、
クラス宣言をした後、かつ、インスタンスからメソッド呼び出しをする前
にやるべし。
クラス宣言をした後、かつ、インスタンスからメソッド呼び出しをする前
にやるべし。
とは、「インスタンスからメソッド呼び出しをする前に代入しなければならず、かつ、可読性のためにクラス宣言の後に代入した方がよい」という事かな?
0 件のコメント:
コメントを投稿