在Javascript中扩展(继承)类(或对象)
我正在从事一个UI自动化项目,我想从另一个页面对象扩展一个页面对象。我在谷歌上搜索实现这一目标的方法,但找不到我要搜索的确切内容。 基本上我有这样的代码设置 BasePage.js在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
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);
}