繁体   English   中英

尝试使用 object 属性中的值填充字符串 - 获取“未定义”

[英]Trying to populate string with values from object properties - getting "undefined"

我正在尝试在 Codewars 上解决以下 Javascript kata 但变得“未定义”。 请有人告诉我究竟什么是“未定义”。 我正在努力了解下面的代码中缺少的内容。 干杯。

挑战链接: https://www.codewars.com/kata/training-js-number-5-basic-data-types-object

我搜索了 FreeCodeCamp JS OOP 和 Basic 教程/课程以找到类似的问题。 通过 StackOverflow、Reddit 和 Google 搜索了很多类似挑战的网站。 代码如下:

function animal(name, legs, color) {
  this.name = name;
  this.legs = legs;
  this.color = color;
}
var dog = new animal("dog", 4, "white");
// similar variables set such for other animal objects.
animal.prototype.toString = function animalToString() {
  var sent = "This " + this.color + " " + this.name + " has " + this.legs + " legs.";
  return sent;
}
return animal.prototype.toString.call();

预期: This white dog has 4 legs. ,取而代之的是: undefined

1) 根据“说明”

给你一个函数动物,像这样接受 1 个参数 obj:{name:"dog",legs:4,color:"white"} 并返回一个这样的字符串:“这只白狗有 4 条腿。”

function animal({name, legs, color}) {
    return `The ${color} ${name} has ${legs} legs.`;
}

2)基于你应该学习的内容

function animal({name, legs, color}) {
  this.name = name;
  this.legs = legs;
  this.color = color;
}

animal.prototype.toString = function animalToString() {
  return `The ${this.color} ${this.name} has ${this.legs} legs.`;
}

var dog = new animal({name:"dog", legs:4, color:"white"});
dog.toString();

尝试这个:

function animal(obj){
  var newAnimal = {
    name: obj.name,
    legs: obj.legs,
    color: obj.color
  };


return "This " + newAnimal.color + " " + newAnimal.name + " has " + newAnimal.legs + " legs.";
}

我相信这个 kata 的目的是向您介绍 javascript 对象。 当您更改函数“animal”的输入时,会引发该问题。 如果您查看右下角的示例测试,输入到您尝试创建的函数中的输入应该只接受一个参数,该参数是一个具有名称、腿和颜色属性的对象。 您将此输入更改为三个单独的参数,而不是一个。

或者您可以完全跳过分配并直接访问输入,如下所示:

function animal(obj){

return "This " + obj.color + " " + obj.name + " has " + obj.legs + " legs.";
}
  function animal(obj){
     return `This ${obj.color} ${obj.name} has ${obj.legs} legs.` 
  }

你可以试试这个

function animal(obj){
  var a={name:"dog",legs:4,color:"white"}
  return "This" + " " + a.color + " " +a.name + " " + "has" + " " + a.legs + " " + "legs.";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM