var obj = this; ではない書き方ってあるの?(iOS Safari)

お仕事でsortが必要なケースがあって下記のようなコードを組みました。

そこで、タイトルの通りなのですが、var obj = this; ではない書き方ってあるのかな?と。

[javascript]

var Hoge = function(){};

Hoge.prototype = {

string : "hoge",

station : [

{name:"hoge",customers:736715}

,{name:"kamip",customers:544222}

,{name:"moge",customers:403277}

,{name:"kamip2",customers: 172306}

],

punch : function(){

//alert('punch!');

},

sort : function(){

//alert(this.string); // "hoge"

var obj = this;

this.station.sort(

function sst(a,b){

//alert(this.string);// undefined

//alert(obj.string); // "hoge"

var a = a["customers"];

var b = b["customers"];

if(true){

//降順

if( a < b ) return 1;

if( a > b ) return -1;

}else{

//昇順

if( a < b ) return -1;

if( a > b ) return 1;

}

return 0;

}//.bind(this) //ios safariだと効かない

);

},

};

var moge = new Hoge();

moge.sort();

[/javascript]

これはなんとなくこうやればいいんじゃね?的な感じでやったら出来ただけですが、

GoodParts本のP55ページ、関数呼び出しパターンに記載されている方法が↑でした。

また別の方法として.bind(this) を付ける方法もあったのですが、これはiOS Safariの場合bindがないよエラーだったので、なんかださいなーと思いつつ。結局よい案がなかったので書いておきます。

まだまだ勉強不足なので「こんな方法で出来るよー」とかあれば是非とも教えてください。