【问题标题】:Store contact form information to a class in JavaScript (ES6)?将联系表单信息存储到 JavaScript(ES6)中的类?
【发布时间】:2016-08-07 03:04:27
【问题描述】:

我正在尝试构建一个 JS 应用程序,该应用程序在填写表单时实例化新的联系人对象。但是,当涉及到类时,我正在努力在获取输入字段和实例化联系人之间创建逻辑。

到目前为止的代码。

点击时创建联系人的类。

export class Create {

    addEventListeners () {
        document.querySelector('#new-contact').addEventListener("click", createContact);
    }

    createContact () {
        let contact = new Contact({
            contFn: 'Tim',
            contLn: 'Cook'
        })
    }

}

联系人的类。

'use strict';

export class Contact {

    constructor (contFn, contLn, contEmail, contPhone, contSocial) {
        this.contFn = contFn;
        this.contLn = contLn;
        this.contEmail = contEmail;     
        this.contPhone = contPhone;
        this.contSocial = contSocial;
    }

    printContact () {
        console.log(this.contFn);
        console.log(this.contLn);
    }

}

window.addEventListener('load', () => new Contact());

【问题讨论】:

    标签: javascript class object ecmascript-6


    【解决方案1】:

    createContact 未定义。没有具有该名称的变量。它是一个方法,一个继承自实例原型的属性。您必须以this.createContact 的身份访问它。但是假设你在方法中使用Create 实例,你不能在没有losing context 的情况下直接传递它,所以你应该这样做

    addEventListeners () {
        document.querySelector('#new-contact').addEventListener("click", (e) => this.createContact(e));
    }
    

    请注意,如果 class 没有其他作用,您可能不应该在这里使用它。

    【讨论】:

    • 构造函数中的this.discasrd = this.createContact.bind(this); 是否具有与addEventListener("click", (e) => this.createContact(e)); 相同的预期效果?
    • 是的,你也可以这样做,那就是….addEventListener("click", this.discasrd)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 2020-04-07
    • 2015-02-03
    相关资源
    最近更新 更多