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

因此,我试图与Selenium一起学习一些javascript。我读了一些示例,看到了两种实现页面对象模型的方法

第一种方式:

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是的,但我不明白为什么它似乎是首选。