3

gruntnpmモジュールのソースコードから次のコード行が表示されています-

String.prototype.__defineGetter__(method, function() { return this; });

上記の無名関数内の「this」の値がどうなるかを予測しようとしているだけです-

  • 'メソッド'を指します
  • ブラウザまたはgruntの観点で類似したもので実行されている場合は、グローバルな「ウィンドウ」オブジェクト
  • 'defineGetter'定義内でcallまたはapplyが使用されている場合、 defineGetterの定義に依存する他の何か。

助けてくれてありがとう !!

4

1 に答える 1

7

thisget操作が発生するオブジェクトになります。これは、常に呼び出し元のオブジェクトになると思い__defineGetter__ます(その関数を他の場所に転送する方法がすぐにわからないためですが、できないとは限りませ。ただし、意図的に行う必要があります)。

__defineGetter__これは非標準であり、廃止されていることに注意してください。ゲッターを定義する現在の方法は、次のようにObject.definePropertyまたはを使用することです。Object.defineProperties

Object.defineProperty(String.prototype, "foo", {
  get: function() {
    // Here, `this` is the string
    return this.toUpperCase();
  }
});

console.log("hi there".foo);

...どのログ"HI THERE"

実例| ソース

于 2012-12-19T21:58:17.527 に答える