在Javascript中扩展(继承)类(或对象)

在Javascript中扩展(继承)类(或对象),javascript,object,inheritance,intern,ui-testing,Javascript,Object,Inheritance,Intern,Ui Testing,我正在从事一个UI自动化项目,我想从另一个页面对象扩展一个页面对象。我在谷歌上搜索实现这一目标的方法,但找不到我要搜索的确切内容。 基本上我有这样的代码设置 BasePage.js define([], function () { function BasePage(remote) { this.remote = remote; } BasePage.prototyp

我正在从事一个UI自动化项目,我想从另一个页面对象扩展一个页面对象。我在谷歌上搜索实现这一目标的方法,但找不到我要搜索的确切内容。 基本上我有这样的代码设置

BasePage.js

    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;
});
我希望通过执行以下操作继承LoginPage中的BasePage方法:

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

仅供参考,我使用Intern.js进行测试。

您需要这样定义。第一行将使用BasePage.prototype中的属性和方法创建一个新对象,并将prototype引用设置为该对象,这样每个LoginPage对象都将具有这些属性和对象。毕竟,我添加了所有只与LoginPage LoginPageredMethod相关的特定数据。设置合适的构造函数也很重要

更新

范例

函数BasePageremote{ this.remote=远程; } BasePage.prototype={ 构造函数:BasePage, commonMethodToIntreactWithPage:函数{ 返回“从基本页”; } }; 函数LoginPageremote{ BasePage.callthis,远程; } LoginPage.prototype=Object.createBasePage.prototype; LoginPage.prototype.constructor=LoginPage; LoginPage.prototype.loginpageredmethod=函数{ 返回“从登录页面”; } var loginPage=新loginPage'Test';
console.logloginPage.commonMethodToIntreactWithPage;您可以尝试LoginPage.prototype=new BasePage请注意,Object.create第二个参数不能是任何对象,它必须是属性描述符的对象,而BasePage.prototype不是这样的对象。请检查此答案以了解更多详细信息:@BartekFryzowicz抱歉,我键入了一些错误,第一个参数应该是BasePage。prototype@SurenSrapyan所有这些都应该包含在LoginPage.js中??是的,如果您有权访问BasePage,我如何将参数传递给BaseTest的构造函数?
LoginPage.prototype = Object.create(BasePage.prototype);

LoginPage.prototype.constructor = LoginPage;

LoginPage.prototype.loginPageRelatedMethod = function(){
    return doSomething;
}
function LoginPage(remote) {
   BasePage.call(this, remote);
}