2017-09-04 41 views
-5

能否請你幫我這個代碼是沒有顯示輸出該Java腳本功能無法正常工作

我只想讓他/她的退休 之前一個人離開的年數。 我做了一個已經有值,當我使用了第三個屬性,即,從他們的年齡yearsuntilretire它,應減65,並返回剩下的年齡,然後在退休前

<!DOCTYPE html> 

<html> 
<head> 

    <script> 

    function people(name,age){ 
     this.name= name; 
     this.age = age; 
     this.yearsuntilretire = yearsleft(); 
    } 
    function yearsleft(){ 
      var numyears = 65 - this.age; 
      return numyears; 
    } 

    var sip = new people("manda arpitha",19); 

    </script> 

</head> 

<body> 

    <script type="text/javascript"> 
    document.write(sip.yearsuntilretire();) 
    </script> 
</body> 
</html> 
+1

this.yearsuntilretire = yearsleft; ...... –

+0

我想你忘記返回爲民()函數。請返回this.yearsuntilretire – WebGuy

+3

分號在一行... –

回答

0

你只需要一個對象分配給yearsleftyearsuntilretire。更改this.yearsuntilretire = yearsleft();this.yearsuntilretire = yearsleft;

function people(name,age){ 
 
    this.name= name; 
 
    this.age = age; 
 
    this.yearsuntilretire = yearsleft; 
 
} 
 
function yearsleft(){ 
 
    var numyears = 65 - this.age; 
 
    return numyears; 
 
} 
 

 
var sip = new people("manda arpitha",19); 
 
document.write(sip.yearsuntilretire());

+0

是啊,我這樣做,即使是現在它不工作 –

+0

變化'文件撰寫(sip.yearsuntilretire();)''到文件撰寫(sip.yearsuntilretire() )' –

+1

是的,它的工作感謝ü這麼多 –

0

理想情況下,你應該在這裏採取的JavaScript原型的優勢。

以及與new實例構造函數被調用通常是大寫所以讓我們從這裏開始:

function Person(name, age) { 
    this.name = name; 
    this.age = age; 
} 

然後我們加入一個名爲yearsUntilRetirement原型功能:

Person.prototype.yearsUntilRetirement = function() { 
    return 65 - this.age; 
} 

就像你在編碼你的例子我們創建一個新對象:

var sip = new Person('manda arpitha', 19); 

但現在我們需要做的是叫我們對這個原型,因此,此對象的功能。

console.log(sip.yearsUntilRetirement()); // 46 

DEMO

在ES6,classes were introduced這使得它稍微容易處理JavaScript對象的傳承。基本上它們只是現有原型系統上的「糖」。該代碼執行與上述相同的代碼:

class Person { 

    constructor(name, age) { 
    this.name = name; 
    this.age = age; 
    } 

    yearsUntilRetirement() { 
    return 65 - this.age; 
    } 

} 

DEMO