Backbone.js 如何在coffeescript子类中重写Backbone.Router.execute函数?
我有一个类,它使用coffeescript中的Backbone.js 如何在coffeescript子类中重写Backbone.Router.execute函数?,backbone.js,coffeescript,Backbone.js,Coffeescript,我有一个类,它使用coffeescript中的extends关键字扩展主干路由器。如何重写类中的Backbone.Router.execute方法 我尝试在我的子类中添加一个具有相同方法签名的execute,但它仍然调用父类方法,而不是我的自定义方法 jQuery -> class MyRouter extends Backbone.Router routes: "path/:id" : "myFunction" execute: (c
extends
关键字扩展主干路由器。如何重写类中的Backbone.Router.execute方法
我尝试在我的子类中添加一个具有相同方法签名的execute,但它仍然调用父类方法,而不是我的自定义方法
jQuery ->
class MyRouter extends Backbone.Router
routes:
"path/:id" : "myFunction"
execute: (callback, args, name) ->
console.log('hello')
console.log(args)
# do stuff
args.push(parseQueryString(args.pop()));
if callback
callback.apply(@, args);
myFunction: (id) ->
# do stuff
我想在调用myFunction之前对args添加一些检查,但不知何故无法重写execute方法。我做错了什么?看起来您根本无法混合主干对象和ES6类 这是一本书 事实证明,ES6类不支持直接向类实例添加属性,只支持函数/方法。当您了解实际发生的情况时,这是有意义的。使用JavaScript继承,属性通常意味着在创建实例时在实例上设置,而方法则在原型对象上设置,并在每个实例之间共享。如果将属性直接添加到原型中,它们也将在每个实例之间共享,如果属性是具有可变状态(如数组)的对象,则会产生问题
您必须坚持使用
Object.extends()
的主干方法。下面是coffeescript中代码的示例:
MyRouter = Backbone.Router.extend
routes:
"path/:id" : "myFunction"
execute: (callback, args, name) ->
console.log('hello')
console.log(args)
# do stuff
args.push(parseQueryString(args.pop()));
if callback
callback.apply(@, args);
myFunction: (id) ->
# do stuff
您能否演示如何实例化
MyRouter
并调用execute
方法?@caffeinated.tech正常实例化customRouter=new MyRouter
。我们不需要调用execute方法,因为主干网正在处理这个问题。