コードは次のとおりです:
var doubling=function(x){
return x*2};
var obj={
val:100,
}; 関数呼び出しモードを使用する場合、これは次のようになります。グローバルオブジェクトにバインドされます。この状況は、オブジェクトのプロパティとメソッドが初期化されるときにも反映されることがあります。次に、ojb に次のコードを追加します。
コードをコピーします。 コードは次のとおりです。
var obj={val:100,
prop:function(){
var that=this;
document.write('name: '+that+' ; タイプ: '+typeof(that)+'
');
return doubling(that.val)(),
var that=this; write(' name: '+that+'; type: '+typeof(that)+'
');
return doubling(that.val);
prop は匿名を使用します。 executable この関数は、関数呼び出しモードでオブジェクトの val 値の doubling() 操作の結果を取得することを期待しており、get_prop がメソッド呼び出しモードです。
スクリプトがロードされると、objの属性propが初期化されるときに、ステートメント「name: [object Window]; type: object」が出力されます。obj.get_prop()を使用すると、ステートメント「name: [object Object]」が出力されます。 ; タイプ: オブジェクト」が出力されます。前者は関数本体の「this」がグローバル変数 window であることを示し、後者は予想通り obj そのものです。
属性 prop とメソッド get_prop() の戻り値を確認できます。前者は window オブジェクトを乗算して NaN を返し、後者は 200 に等しくなります。
obj リテラル式に加えて、new_prop 属性と new_get_prop() メソッドを設定することが期待されます。結果は前の記事と一致し、メソッド呼び出しモードはこれ自体へのバインディングを取得します。