2016-02-06 81 views
-1
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); 

Console.log正在打印未定義。爲什麼? 我的預期成果是:您的車是2010現代伊蘭特返回未按預期工作

回答

-1
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); 
+0

謝謝,我想知道爲什麼需要刪除_this_以及爲什麼'mycar.printc'需要更改爲'mycar'以使其正常工作.....是不是'printc'是'Car'對象的屬性。而你使用點符號訪問對象的屬性....對不起,如果我的表述看起來很愚蠢,只是想提高我的js技能....再次感謝... – Slyper

+0

爲什麼你要返回一個'字符串'從一個對象instatiator?這很混亂,難以維護。 'printc'應該是'Car'的成員變量。這是可怕的編碼建議! – BenM

+0

這是對你的代碼的修改,只是爲了使它工作,正確的方式是@BenM提供的方式。 – Akis

3

你返回的printc的價值,它不是分配給Car對象。另外,this.year將始終未定義,除非您手動將它們分配給Car對象。

嘗試以下操作:

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); 

jsFiddle Demo

注意空間不會被保留,所以你可能要更新的printc分配如下:

this.printc = "You car is " + year + ' ' + make + ' ' + model; 
+0

感謝本,我想了解的 '迴歸' 的用法。是否有可能使用'return'語句來打印值,因爲我已經在我的原始代碼中嘗試過了? – Slyper

+0

是的,但那麼你不應該使用'new'關鍵字。你需要:'console.log(Car(2010,「Hyundai」,「Elantra」))'。 – BenM

+0

好吧,我嘗試過,然後它打印,_你的車是undefined undefined undefined_ – Slyper

0

或者你可以使用ES6類:

'use strict'; 
 

 
class Car { 
 
    constructor(year, make, model) { 
 
    this.year = year; 
 
    this.make = make; 
 
    this.model = model; 
 
    } 
 

 
    printC() { 
 
    return `Your car is ${this.year} ${this.make} ${this.model}`; 
 
    } 
 
} 
 

 
const myCar = new Car(2010, "Hyundai", "Elantra"); 
 
document.write(myCar.printC());