2017-08-11 15 views
-2

名前が "joe"でマネージャのオブジェクトを作成し、従属 "John"を作成し、SalaryをJohnに追加する方法。JavaScriptプロトタイプチェーンの作成方法

Ex。 var result =新しいマネージャ( "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

あなたはクラスマネージャ、縦軸の1を持っている場合のようにオブジェクトを返す必要があるあなたが連鎖する場合は機能:

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

が、私はお勧めので、私はあなたが、結果としてManagerオブジェクトをしたいと思いますこの方法を使用する

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); 
関連する問題