1

Stringクラスを拡張して簡単なメソッドを追加したい:

String.prototype.world = function(){
  return " world";
} 

そして、私は次のようなことをしたい:

"hello".world

そして戻って"hello world"ください。代わりに:

"hello".world()

括弧なしで関数を呼び出すと、関数オブジェクトが返されます。

私が探しているのは、(括弧を指定せずに)関数を返す代わりに実行することです。

JavaScriptで何とかできますか?

EDIT : thisによると、 using__defineGetter__は非標準で非推奨です。オルタナティブを探しています。

4

2 に答える 2

4

セッターゲッターを使用してそれを行うことができます。jsfiddle . ただし、setter getter は IE < 9 ではサポートされていません。

 function getter(){
    return this + " world";
  }
  if(Object.__defineGetter__){ // chrome 
  String.prototype.__defineGetter__('world', getter);
}else{
 Object.defineProperty(String.prototype, 'world', { // IE
                    get : getter
                });
}
于 2012-10-04T15:49:58.090 に答える
3

次のようにゲッターを定義できます。

String.prototype.__defineGetter__("world", function() {
    return this + ' world';
});

'hello'.world // 'hello world'

フィドル

于 2012-10-04T15:47:28.760 に答える