関数宣言にいくつかのタイプミスがあります。
あなたのprop変数は(this.propを使用して)「public」または「visible」メンバーとしても定義されます。そうすることで、外部関数からのこれの参照(実際にはオブジェクトインスタンスへの参照)を強制的に保存します。関数の「プライベート」メンバーとして(varを使用)、作成されたオブジェクトのインスタンスにアクセスし、「パブリック」プロップメンバーを読み取ります。
このコードを書き直すためのいくつかの選択肢があります。
function someObj (){
var self = this;
this.prop = 33;
this.mouseMoving = function() { alert(self.prop);} // You access the current
// instance, stored in *self*
// since *this*, inside the
// function, is in another
// context.
//...
}
var mySomeObj = new someObj(); // Object instantiation
または、次のことができます。
function someObj (){
var prop = 33;
this.mouseMoving = function() { alert(prop);}
//...
}
var mySomeObj = new someObj(); // Object instantiation
varで宣言された変数は、主要なコンストラクター関数内で宣言された関数にアクセスできます。この機能はクロージャと呼ばれます。