Javascript:覆盖骨干模型的原型
Javascript: Overwriting the prototype of a Backbone model
我想使用下划线覆盖骨干模型的原型.js。这是我的代码:
_.extend(TableView.prototype, {
el: $("#" + this.id + "_div"),
});
总之,我希望默认情况下模型附加到一个 html 元素,其 id 等于模型的 id 加上"_div"。模型的id是TableView
的属性id
,我尝试使用this
访问模型。问题是我收到错误:"这是未定义的"。为什么?
PS:我知道正确的方法是在新模型中扩展模型。我想覆盖原来的,因为 Backbone 的 extend() 方法似乎不像类继承,my_new_object instanceof TheOldModel
返回false
。无论如何,我也遇到了同样的错误TableView.extend()
。
PPS:我正在扩展一些Splunk的观点。
在评估代码片段时,this
没有特定的含义,并且设置为上下文中的任何内容。它只有在稍后发生的实例上下文中才有意义。
如果要设置动态el
,请提供一个在实例化视图时要计算的函数:
var TableView = Backbone.View.extend({
el: function() {
return '#'+this.id+'_div';
}
});
var v = new TableView({id: 'x'});
console.log(v.$el.text());
http://jsfiddle.net/nikoshr/bcfhqq18/
或者,如果您希望修改原型
TableView.prototype.el = function() {
return '#'+this.id+'_div';
}
http://jsfiddle.net/nikoshr/bcfhqq18/2/
最后,请注意,通过 Backbone 扩展类会设置原型链,并且在针对祖先类进行测试时instanceof
应该为真:
var TableView = Backbone.View.extend({
});
var DeepTableView = TableView.extend({
el: function() {
return '#'+this.id+'_div';
}
});
var v = new DeepTableView({id: 'x'});
console.log(v instanceof Backbone.View); // true
console.log(v instanceof TableView); // true
console.log(v instanceof DeepTableView); // true
http://jsfiddle.net/nikoshr/bcfhqq18/3/
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 使用“;这个“;JavaScript原型方法中的关键字
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- 引用类变量中的原型方法
- 如何从对象的原型方法访问JavaScript对象属性
- 为什么要包装每一个原型“;类“;JS中具有匿名函数的对象
- 骨干模型默认值-todos.js示例中不必要的代码
- EmberJS中支持单字母单词模型
- Node.js中的JavaScript原型对象效率
- 使用原型扩展挖空视图模型
- Javascript:覆盖骨干模型的原型
- 这是JavaScript's的原型继承模型
- 如何使主干模型继承THRE.Object3D的原型
- 为什么我的实体模型框架的forEach原型不起作用
- 为什么脊椎.模型在原型中有同名的函数
- 学习资源:Javascript原型对象模型
- 图表库的闭包或原型模型
- 模型视图控制器-用于非常简单的单页原型的Javascript框架
- 骨干模型及其原型链的深度副本