2

私は backbone.js に関する codeschool.com のチュートリアルに取り組んできました。

var AppRouter = new Backbone.Router.extend({
  //code
});
$(function(){ AppRouter.start() });

次のエラーメッセージが表示されました。

TypeError: 'undefined' is not a function (evaluating 'AppRouter.start()') :28 :14

しかし、括弧を1つ追加すると問題が解決しました

var AppRouter = new (Backbone.Router.extend({
  //code
}));

以前はまだ機能していたはずのような気がします...括弧が1つ少ないとどうなりますか?

4

2 に答える 2

3

コンストラクターとして使用Backbone.Router.extendしていました (かっこは、呼び出しの結果ではなく、コンストラクターへの引数として使用されますBackbone.Router.extend(呼び出しはBackbone.Router.extend、コンストラクターとして使用される関数を返します)。たとえば、次を比較します。

function Test()
{   return function () { this.a = 2; };
}

console.log(new Test()); // function () { this.a = 2; }
console.log(new (Test())); // { a: 2 }
于 2013-10-26T06:50:35.727 に答える