2

私はこれの違いは何だろうと思っています:

var o = {
    name: 'John',
    getName: function getName() {
       console.log(arguments.callee.name + ' was called');
    }
}

o.getName();

「通常の」匿名アプローチへ:

var o = {
    name: 'John',
    getName: function () {
       console.log('getName was called');
    }
}

o.getName();

明らかに最初のものにはいくつかの利点があるように思われるからです.何か欠点がありますか?

4

2 に答える 2

2

落ち込みはありますか?

はい。

  • arguments.callee廃止されました。getName関数オブジェクトを取得するには、 を参照するだけです。
  • .nameは非標準のプロパティです。すべてのブラウザーで機能するとは思わないでください。
  • 名前付き関数式は、風変わりなエンジンでいくつかの問題を引き起こします

私は一緒に行きます

var o = {
    name: 'John',
    getName: function getName() {
       console.log('getName was called');
    }
};

名前付き関数 (コール スタックのデバッグに役立ちます) があり、それにlog()もかかわらず動作します。

于 2013-10-09T11:47:33.457 に答える