-
ID:pfm4MK さんの質問

javascriptについてです。いつもお世話になっております。

Cube.prototype = new objectMethod();
function objectMethod(){
this.zSort=function (){
this.faces=this.faces.sort(function(a,b){
var az=0,bz=0;
for(var i=0;i<a.length;i++){
az+=【this】.vertices[a[i]].z;
az=az/a.length;
}
for(i=0;i<b.length;i++){
bz+=【this】.vertices[b[i]].z;
bz=bz/b.length;
}
return bz-az;
});
};
}

Cubeはfacesとverticesをプロパティに持つコンストラクタです。
これが上手く動作せず調べてみたところ、メソッド内の関数のthis(墨付き括弧で示したthis)はグローバルを指すことがわかりました。
何とかしてCubeのインスタンスを参照するようにしたいのですが、
どのようにすればいいのでしょうか。

みんなの回答 1 件

ID:erXTLP さんの回答

そもそも何でそのthisがCubeのインスタンスを指さないかは理解したんだよね?

解決法としては、thisを別の変数に入れておくか、sortに渡している関数をbindする

ID:pfm4MK

なるほどー…言われてみれば簡単なことでしたね…
無事動作しました。ありがとうございました。
恥ずかしながらbindというのを初めて知りました。これも勉強してみます。

最終更新日:2014-08-18 (1,498 views)

関連するトピックス

ページ上部に戻る