首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过函数和使用方法创建对象,而不将对象存储在变量中

通过函数和使用方法创建对象,而不将对象存储在变量中
EN

Stack Overflow用户
提问于 2020-12-17 09:00:18
回答 1查看 70关注 0票数 0

有没有一种方法可以让函数创建对象而不将它们存储在变量let中,如以下代码所示:

代码语言:javascript
运行
复制
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.

EN

Stack Overflow用户

发布于 2020-12-17 09:13:02

您可以根据调用构造函数的结果直接调用方法。

代码语言:javascript
运行
复制
createRiver('Amazon', 'South America', 6575).logRiver();

console.log(createRiver('Amazon', 'South America', 6575).isLongerThan(createRiver('Danube', 'Europe', 2850)));

但是当您这样做时,一旦方法完成,对象就会被丢弃,因为没有对它们的永久引用。

您可以将它们推入数组中。

代码语言:javascript
运行
复制
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());

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65333285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档