Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 覆盖主干';s视图函数_Javascript_Backbone.js_Overriding - Fatal编程技术网

Javascript 覆盖主干';s视图函数

Javascript 覆盖主干';s视图函数,javascript,backbone.js,overriding,Javascript,Backbone.js,Overriding,假设一个主干视图,例如 var Row = Backgrid.Row = Backbone.View.extend({ foo: function() {} } 我想在此源代码之外重新定义foo函数。 因为上面的代码本身也是一个库 我该怎么做呢?JavaScript中的继承是基于原型的。每个类构造函数都有prototype属性,您可以在其中定义它将创建的对象的方法 Backgrid.Row.prototype.foo = function () { // new code }

假设一个主干视图,例如

var Row = Backgrid.Row = Backbone.View.extend({

  foo: function() {}

}
我想在此源代码之外重新定义
foo
函数。
因为上面的代码本身也是一个库


我该怎么做呢?

JavaScript中的继承是基于原型的。每个类构造函数都有
prototype
属性,您可以在其中定义它将创建的对象的方法

Backgrid.Row.prototype.foo = function () {
    // new code
}
它将替换所有
Backgrid.Row
实例的
foo
的现有实现,除非它们有自己的
foo
属性

var row = new Backgrid.Row();
row.foo = function () { ... }; // row now has it's personal `foo` implementation
我应该告诉您,建议您改为创建新类

var MyRow = Backgrid.Row.extend({ foo: function () {} });