2017-03-16 27 views
0

私は別のページオブジェクトから1ページオブジェクトを拡張したいUIオートメーションプロジェクトに取り組んでいます。私はこれを達成するための方法を探ったが、私が探しているものを正確に見つけることができなかった。 基本的に私はこのようなコード設定をしています。Javascriptでクラス(またはオブジェクト)を継承(継承)

BasePage.js私はこれを行うことにより、LoginPageBasePageの方法を継承させたい

define([], 
     function() { 

      function BasePage(remote) { 
      this.remote = remote; 

      } 

      BasePage.prototype = { 
       constructor: BasePage, 
      // common methods to interact with page 

      commonMethodToIntreactWithPage : function{ 
       return doSomething; 
      } 
    }; 

    return BasePage; 
}); 

LoginPage.js

define([], 
     function() { 

      function LoginPage(remote) { 
      this.remote = remote; 

      } 

      LoginPage.prototype = { 
       constructor: BasePage, 
      // Login Page related Methods 

      loginPageRelatedMethod: function{ 
       return doSomething; 
      } 
    }; 

    return LoginPage; 
}); 

:ちょうど情報について

var loginPage = new LoginPage(remote); 
loginPage.commonMethodToIntreactWithPage(); 

をIテスト用にIntern.jsを使用しています。

+1

あなたが試みることができる 'LoginPage.prototype =新しいBasePageクラス()' – amenadiel

答えて

1

このように定義する必要があります。最初の行は、BasePage.prototypeにあるプロパティとメソッドを持つ新しいオブジェクトを作成し、これにプロトタイプリファレンスを設定します。したがって、すべてのLoginPageオブジェクトはこれらのプロパティとオブジェクトを持ちます。結局のところ、私はLoginPageloginPageRelatedMethod)にのみ関連するすべての特定のデータを追加します。また、適切なものを設定することが重要ですconstructor

LoginPage.prototype = Object.create(BasePage.prototype); 

LoginPage.prototype.constructor = LoginPage; 

LoginPage.prototype.loginPageRelatedMethod = function(){ 
    return doSomething; 
} 

UPDATED

function LoginPage(remote) { 
    BasePage.call(this, remote); 
} 

function BasePage(remote) { 
 
    this.remote = remote; 
 
} 
 

 
BasePage.prototype = { 
 
    constructor: BasePage,  
 
    commonMethodToIntreactWithPage : function() { 
 
     return 'From Base Page'; 
 
    } 
 
}; 
 

 
function LoginPage(remote) { 
 
    BasePage.call(this, remote); 
 
} 
 

 
LoginPage.prototype = Object.create(BasePage.prototype); 
 

 
LoginPage.prototype.constructor = LoginPage; 
 

 
LoginPage.prototype.loginPageRelatedMethod = function() { 
 
    return 'From Login Page'; 
 
} 
 

 
var loginPage = new LoginPage('Test'); 
 
console.log(loginPage.commonMethodToIntreactWithPage());

+0

その 'オブジェクトに注意してください。 2番目のargを作成するそのオブジェクトは、_property descriptors_のオブジェクトでなければならず、 'BasePage.prototype'はそのようなオブジェクトではありません。この詳細はSO答えを確認してください:http://stackoverflow.com/questions/17408350/object-create-bug –

+0

@BartekFryzowicz申し訳ありませんが、私は何かを間違っていました。最初のパラメータは 'BasePage.prototype'である必要があります –

+0

@SurenSrapyanすべて'LoginPage.js'にインクルードする必要がありますか? – CodeBlooded