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");
没有区别。
当您在对象中使用 this
时,您是在将值放入对象中。
您自动将名称 属性 添加到 Kitten 对象中:
var Kitten = function() {
this.name = 'Garfield';
}
您从外部显式地将名称添加到 Kitten 原型中:
var Kitten = function() {
}
Kitten.prototype.name = "Garfield";
当您使用 new Kitten()
时,对象之间共享原型,并且将重新创建使用 this
在函数内部创建的内容。
调用代码的结果是一样的,不同的实现是这样的:
当您在实例化函数中调用函数时,每次创建 new
对象时都会创建它们。当它们在原型上创建时,这些函数将在所有实例之间共享。
两者各有优缺点 - 您可以使用内部函数创建类似 "private" 成员变量的东西,您可能会在其他语言中看到它,并实现 JavaScript 中广泛使用的模块模式开发人员,但如果您要创建大量对象,那么共享原型函数可以提高内存效率。现在人们不太关心内存效率,但如果你的目标是移动平台,它可能是相关的。
我更喜欢使用原型,因为在我看来它似乎更自然地随着语言的流动而发展,但是 - 就像所有严肃的 JavaScript 开发一样 - 它确实意味着有时你最终会感到困惑范围场景。
在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");
没有区别。
当您在对象中使用 this
时,您是在将值放入对象中。
您自动将名称 属性 添加到 Kitten 对象中:
var Kitten = function() {
this.name = 'Garfield';
}
您从外部显式地将名称添加到 Kitten 原型中:
var Kitten = function() {
}
Kitten.prototype.name = "Garfield";
当您使用 new Kitten()
时,对象之间共享原型,并且将重新创建使用 this
在函数内部创建的内容。
调用代码的结果是一样的,不同的实现是这样的:
当您在实例化函数中调用函数时,每次创建 new
对象时都会创建它们。当它们在原型上创建时,这些函数将在所有实例之间共享。
两者各有优缺点 - 您可以使用内部函数创建类似 "private" 成员变量的东西,您可能会在其他语言中看到它,并实现 JavaScript 中广泛使用的模块模式开发人员,但如果您要创建大量对象,那么共享原型函数可以提高内存效率。现在人们不太关心内存效率,但如果你的目标是移动平台,它可能是相关的。
我更喜欢使用原型,因为在我看来它似乎更自然地随着语言的流动而发展,但是 - 就像所有严肃的 JavaScript 开发一样 - 它确实意味着有时你最终会感到困惑范围场景。