有没有一种方法可以让函数创建对象而不将它们存储在变量let中,如以下代码所示:
var createRiver = function(name, continent, lengthInKilometers) {
if (!(this instanceof createRiver)) {
return new createRiver(name, continent, lengthInKilometers);
}
this.name = name;
this.continent = continent;
this.lengthInKilometers = lengthInKilometers;
}
let Amazon = createRiver('Amazon', 'South America', 6575) //Without let
let Danube = createRiver('Danube', 'Europe', 2850) //Without let
createRiver.prototype.isLongerThan = function(r) {
if (this.lengthInKilometers > r.lengthInKilometers) {
return true;
} else {
return false;
}
}
Danube.isLongerThan(Amazon); //flase
Amazon.isLongerThan(Danube); //true
createRiver.prototype.logRiver = function() {
console.log("The " + this.name + " river is " + this.lengthInKilometers + " kilometers long.");
}
Amazon.logRiver(); ////The Amazon river is 6575 kilometers long.
发布于 2020-12-17 09:13:02
您可以根据调用构造函数的结果直接调用方法。
createRiver('Amazon', 'South America', 6575).logRiver();
console.log(createRiver('Amazon', 'South America', 6575).isLongerThan(createRiver('Danube', 'Europe', 2850)));但是当您这样做时,一旦方法完成,对象就会被丢弃,因为没有对它们的永久引用。
您可以将它们推入数组中。
var createRiver = function(name, continent, lengthInKilometers) {
if (!(this instanceof createRiver)) {
return new createRiver(name, continent, lengthInKilometers);
}
this.name = name;
this.continent = continent;
this.lengthInKilometers = lengthInKilometers;
}
let arrayRiver = [];
arrayRiver.push(createRiver('Amazon', 'South America', 6575));
arrayRiver.push(createRiver('Danube', 'Europe', 2850));
console.log(arrayRiver);
createRiver.prototype.isLongerThan = function(r) {
if (this.lengthInKilometers > r.lengthInKilometers) {
return true;
} else {
return false;
}
}
// Sort rivers by length
arrayRiver.sort((r1, r2) => r1.lengthInKilometers - r2.lengthInKilometers);
createRiver.prototype.logRiver = function() {
console.log("The " + this.name + " river is " + this.lengthInKilometers + " kilometers long.");
}
// Log all rivers
arrayRiver.forEach(r => r.logRiver());
https://stackoverflow.com/questions/65333285
复制相似问题