什么是原型,$.扩展,并返回this"不得不这么做
What are prototype, $.extend, and "return this" have to do?
我正在做一个遗留项目,我对这个做什么感到困惑
define(['jquery', 'components/BaseComponent', 'bootstrap'], function(
$, BaseComponent, bootstrap
) {
'use strict';
return BaseComponent.extend({
initialize: function(options) {
BaseComponent.prototype.initialize.call(this, options); // what is this man?
this.widgetOptions = $.extend({}, options); // what is this man?
return this; // what is this man?
},
render: function() {
BaseComponent.prototype.render.call(this); //again?
return this; //again?
}
});
});
我有开发木偶应用程序的经验,但上面的代码仍然让我困惑。没有文档,做这件事的人已经离开了。
继承和调用父函数
首先,一些信息:
- OOP概念介绍 继承javascript中的OOP
- 与骨干的继承
BaseComponent.prototype.initialize.call(this, options); // what is this man?
-
BaseComponent
是一个构造函数(理解javascript构造函数),它有主干的extend
辅助函数。这个辅助函数包含了原型继承的一些复杂性。 -
BaseComponent.prototype
是父类包含函数和属性的原型。 -
BaseComponent.prototype.initialize
是父类(BaseComponent
)的一个函数,我们通过为这个模块定义一个新的initialize
来覆盖它。
类的函数包含在prototype
属性中。通过在父类原型的函数上使用.call
函数,我们可以在当前对象的上下文中调用该函数。
复制对象
this.widgetOptions = $.extend({}, options); // what is this man?
这是创建一个新对象,其中options
的属性被复制。这是使用jQuery的extend
和它做一个浅拷贝。
- 它确保
this.widgetOptions
是一个对象, - 它是一个副本,所以你可以安全地修改属性,而不影响接收到的
options
对象(它可以被调用代码重用)。
链接函数调用
return this; // what is this man?
用于链式函数调用,如:
myView.render().lookImChaining().functionCalls();
在render
函数内部,它是一个骨干标准。但是在初始化中,它没有意义,因为您从未真正手动调用初始化。
From the Backbone's doc:
一个好的约定是在渲染结束时返回它以启用链接调用。
默认视图render
:
render: function() { return this; },
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 如何提取“;href"最近列表项中的属性值
- CKEditor如何允许href="javascript:void(0)"在小部件中
- 插入“;img src"在javascript中