Javascript方法链接定义
Javascript method chaining definition
在Javascript中使用方法链接有什么区别我知道这可能有一些奇怪的怪癖,所以我不确定:
var Kitten = function() {
this.name = 'Garfield';
this.color = 'brown';
this.gender = 'male';
};
Kitten.prototype.setName = function(name) {
this.name = name;
return this;
};
Kitten.prototype.setColor = function(color) {
this.color = color;
return this;
};
var obj = new Kitten().setName("tom").setColor("red");
和
var Kitten = function() {
this.name = 'Garfield';
this.color = 'brown';
this.gender = 'male';
this.setColor = function(color) {
this.color = color;
return this;
};
this.setName = function(name) {
this.name = name;
return this;
};
};
var obj = new Kitten().setName("tom").setColor("red");
在调用代码方面的结果是相同的,实现之间的区别是:
当在实例化函数中调用函数时,每次创建new
对象时都会创建这些函数。当它们在原型上创建时,这些函数将在所有实例之间共享。
两者都有优点和缺点-你可以使用内部函数来创建一些你可能在其他语言中看到的"私有"成员变量,并实现在JavaScript开发人员中广泛使用的模块模式,但如果你要创建很多对象,那么共享原型函数可以提高内存效率。现在人们不怎么考虑内存效率,但如果你的目标是移动平台,这可能是相关的。
我更喜欢使用原型,因为在我看来,它似乎更自然地适应了语言的流程,但就像所有严肃的JavaScript开发一样,这确实意味着有时你会陷入令人困惑的范围界定场景。
没有区别。
当您在对象内部使用this
时,您正在将值放入对象中。
您自动将名称属性添加到Kitten对象中:
var Kitten = function() {
this.name = 'Garfield';
}
您从外部明确地将名称添加到Kitten原型中:
var Kitten = function() {
}
Kitten.prototype.name = "Garfield";
当您使用new Kitten()
时,原型在对象之间共享,并且使用this
在函数内部创建的内容将被重新创建。
相关文章:
- LinkedIn共享链接图片未使用自定义url更新
- 通过Rails中的自定义Jquery对话框处理链接的确认
- 如何在单击超链接时调用同一函数中定义的函数
- 未捕获的ReferenceError:链接未定义React
- 点击tpl链接时,ExtJS 4.2自定义组件触发事件
- 检查链接对象形式中未定义属性的最佳实践是什么
- jQuery使用自定义select()自动完成:自定义HTML中的超链接
- 根据课程自定义字段在课程页面上添加链接
- 自定义链接的打开方式
- Basic jQuery Slider中上一张/下一张幻灯片的自定义链接触发器
- CoffeeScript 承诺与函数定义链接
- 将自定义链接添加到饼图中的系列/数据部分(高图表.js)
- 谷歌分析自定义链接归因
- 从Angular.js中的自定义链接获取URL参数
- 自定义链接在facebook分享帖子
- 使用javascript替换基于查询字符串的自定义链接id
- 使用jquery定义如何在基于网格的数据表插件中添加自定义链接按钮
- JavaScript -当我更改链接的href时未定义链接
- 自定义链接导航的谷歌搜索快捷方式
- 使用css自定义链接