Javascript 返回未按预期工作
Console.log正在打印未定义。为什么?Javascript 返回未按预期工作,javascript,Javascript,Console.log正在打印未定义。为什么? 我的预期输出是:您的汽车是2010现代伊兰特您返回的是printc的值,而不是将其分配给汽车对象。此外,this.year将始终是未定义的,除非您手动将它们分配给Car对象 请尝试以下操作: var Car = function (year, make, model) { var printc = "You car is" + this.year + this.make + this.model; ret
我的预期输出是:您的汽车是2010现代伊兰特您返回的是
printc
的值,而不是将其分配给汽车
对象。此外,this.year
将始终是未定义的,除非您手动将它们分配给Car
对象
请尝试以下操作:
var Car = function (year, make, model) {
var printc = "You car is" + this.year + this.make + this.model;
return printc;
}
var mycar = new Car(2010, "Hyundai", "Elantra");
console.log(mycar.printc);
请注意,不会保留空格,因此您可能希望更新printc
分配,如下所示:
var Car = function (year, make, model)
{
this.printc = "You car is" + year + make + model;
}
var mycar = new Car(2010, "Hyundai", "Elantra");
// Correctly returns: You car is2010HyundaiElantra
console.log(mycar.printc);
或者,您可以使用ES6类:
“严格使用”;
班车{
建造商(年份、品牌、型号){
今年=年;
make=make;
this.model=模型;
}
printC(){
return`Your car is${this.year}${this.make}${this.model}`;
}
}
const myCar=新车(2010年,“现代”、“伊兰特”);
document.write(myCar.printC())代码>谢谢Ben,我正在尝试理解“return”的用法。是否可以像我在原始代码中尝试的那样使用“return”语句打印值?是的,但是您不应该使用new
关键字。你需要:<代码>控制台。日志(Car(2010,“现代”,“ELANTRA”))< /代码>。好的,我试过了,然后打印,你的车是未定义的未定义的。谢谢,本,在从年移除这个模型后,让它工作。@ PuneETSARMA请考虑接受这个作为正确的答案。您接受的示例非常差。谢谢,我想知道为什么需要删除此示例,为什么需要将“mycar.printc”更改为“mycar”以使其正常工作。。。。。“printc”不是“Car”对象的属性。您可以使用点符号访问对象的属性。。。。对不起,如果我的声明看起来很愚蠢,只是想提高我的js技能。。。。再次感谢…你到底为什么要从object Instantiator返回字符串?这是非常混乱和难以维护的printc
应该是Car
的成员变量。这是一个糟糕的编码建议!这是对您的代码的修改,只是为了让它工作,正确的方法是@BenM提供的方法。感谢您的评论。实际上,它试图返回一个“函数”而不是“字符串”。变量“printc”被包装在一个函数中。但因为它不起作用,我删除了包装器函数进行故障排除。
this.printc = "You car is " + year + ' ' + make + ' ' + model;
var Car = function (year, make, model) {
var printc = "You car is" + year + make + model;
return printc;
}
var mycar = Car(2010, "Hyundai", "Elantra");
console.log(mycar);