javascript函数表达式与类
因此,我试图与Selenium一起学习一些javascript。我读了一些示例,看到了两种实现页面对象模型的方法 第一种方式:javascript函数表达式与类,javascript,selenium,Javascript,Selenium,因此,我试图与Selenium一起学习一些javascript。我读了一些示例,看到了两种实现页面对象模型的方法 第一种方式: class Page { constructor() { const { Builder, By, Key, until, Capabilities } = require('selenium-webdriver'); let chrome = require('selenium-webdriver/chrome');
class Page {
constructor() {
const { Builder, By, Key, until, Capabilities } = require('selenium-webdriver');
let chrome = require('selenium-webdriver/chrome');
let dockerHub = "http://localhost:4444/wd/hub";
let options = new chrome.Options();
this.driver = new Builder()
.forBrowser("chrome")
.usingServer(dockerHub)
.build();
}
open(url) {
return this.driver.get(url);
}
quit() {
console.log("shutting down driver...")
return this.driver.quit();
}
}
第二种方式:
const { Builder, By, Key, until, Capabilities } = require('selenium-webdriver');
let chrome = require('selenium-webdriver/chrome');
let dockerHub = "http://localhost:4444/wd/hub";
let options = new chrome.Options();
var Page = function () {
this.driver = new Builder()
.forBrowser("chrome")
.usingServer(dockerhub)
.build();
var driver = this.driver;
this.open = function (url) {
return driver.get(url);
}
this.quit = function () {
console.log("shutting down driver...")
return driver.quit();
}
}
来自Java,我觉得第一种方法更正确。但在我读过的例子中,第二种方法更为常见。所以我想知道在类上进行函数表达式有什么好处?Javascript并不总是有正式的类。一些JS运行时仍然不支持类。在遗留代码中使用类较少的一个可能原因是,它是在不同的时代编写的。但这只是一个历史解释 就每种方法的优缺点而言,使用类的一个好处是可以获得正式的生命周期方法。如果这很适合您的需要,那么使用类。但是您可以使用这两种范式实现相同的API和功能 请记住,代码最重要的工作是让开发人员理解。函数式方法的一个优点是它不需要额外的类如何工作的知识。来自Java背景的您可能会惊讶地发现,并非所有开发人员都熟悉或熟悉经典的OO模式。如果我和一群不习惯面向类模式的JS开发人员一起工作,我会犹豫使用类
一个并不比另一个更正确。历史上,类不是惯用javascript,因为它们实际上并不存在。随着对类的运行时支持的普及和开发人员对OO模式的熟悉,这种习惯用法可能会发生变化。首先,我可以
Page=null
销毁对匿名函数的引用,从而使其有可能用于垃圾收集,您可能知道Java也有闭包。Java中也有多种方法来声明方法。@Taplar是的,但我不明白为什么它似乎是首选。