2017-08-11 39 views
-2

如何使用名稱「joe」創建Manager對象並創建下屬「John」並向John添加Salary。如何編寫JavaScript原型鏈

Ex。 var result = new Manager(「Joe」)。getSubordinate(「John」)。addSalary(10000);

function Manager(name){ 
    this.name = name; 
    this.getSubordinate = function(submane){ 

     return submane; 
    } 
} 
var result = new Manager('Joe'); 

我能寫下來,到目前爲止。

+2

這是一個字幕比賽嗎?毫無疑問,請參閱[*我如何提出一個好問題?](http://stackoverflow.com/help/how-to-ask) – RobG

+0

究竟是什麼問題? –

+1

「原型鏈」?從你的代碼你似乎在問如何寫一個流利的API ... – giorgiga

回答

0

,如果你想鏈的功能,你需要返回一樣,如果你有一個類經理和縱座標的一個對象:

function Manager(name){ 
    this.name = name; 

    this.subordinate = {John : new Subordinate('John')}; 

    this.getSubordinate = function getSubordinate(subName){ 
     return this.subordinate[subName]; 
    }; 
} 

function Subordinate(name){ 
    this.name = name; 

    this.salary = 0; 

    this.addSalary = function addSalary(salary){ 
     this.salary = salary; 
     return salary; 
    }; 
} 

var result = new Manager('Joe').getSubordinate("John").addSalary(10000); 

,但我想你想作爲結果的管理對象,因此我建議使用這種方式

function Manager(name){ 
    var self = this; 

    this.name = name; 

    this.subordinate = {John : new Subordinate('John')}; 

    this.getSubordinate = function getSubordinate(subName){ 
     return this.subordinate[subName]; 
    }; 

    this.addSalaryToSubordinate = function addSalaryToSubordinate(subName, salary){ 
     self.getSubordinate(subName).addSalary(salary); 
     return self; 
    }; 
} 

function Subordinate(name){ 
    this.name = name; 

    this.salary = 0; 

    this.addSalary = function addSalary(salary){ 
     this.salary = salary; 
     return salary; 
    }; 
} 

var result = new Manager('Joe').addSalaryToSubordinate ("John", 10000);