为了账号安全,请及时绑定邮箱和手机立即绑定

输出不正确,不确定如何修复

输出不正确,不确定如何修复

蝴蝶不菲 2021-11-12 14:13:12
我必须有两个论点,name 和 dept,并创建了一个 name 和 dept 实例变量,默认为 name unknown 和部门 unknown,然后为它们创建 get 和 set 方法,但是每次运行它时,它都会给我类名并且部门未定义好吧,最初我没有把它放在一个类中,而是将它作为一个直接的 const 函数,它可以工作,但是当我无法在另一个文件中正确引用它时,我被告知需要将它们放在一个类中我试过了,现在它没有给出我需要的输出。class Faculty {    constructor(name, dept) {           this.name = "name unknown";        this.dept = "department unknown";    }    getName() {        return this.name;    }    getDept() {        return this.dept;    }    setName(name) {        this.name = name;    }    setDept(dept) {        this.dept = dept;    }}Faculty.toString = function () {        return this.name.concat(" of ").concat(this.dept);}//Faculty.name = "Testname";//Faculty.dept = "Electronic Technology";console.log(Faculty.toString());运行时,它给出了未定义的 Faculty,即使我尝试定义名称,它仍然只是说 Faculty,尽管我需要它默认为 name unknown of department unknown 除非另有设置。
查看完整描述

3 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

这是我如何放置它(并且它有效)


编辑:既然选择了这个答案,我将在这里添加其他答案指出的好元素

const DEFAULT_NAME = "name unknown";

const DEFAULT_DEPT = "department unknown";


class Faculty {

    constructor(name = DEFAULT_NAME, dept DEFAULT_DEPT) {   

        this.name = name;

        this.dept = dept;

    }

    getName() {

        return this.name;

    }

    getDept() {

        return this.dept;

    }


    setName(name) {

        this.name = name;


    }

    setDept(dept) {

        this.dept = dept;

    }


    toString() {

        return `${this.name} of ${this.dept}`;

    }

}


const f = new Faculty("Faculty", "Department");

console.log(f.toString());


查看完整回答
反对 回复 2021-11-12
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

一方面,您必须创建一个新实例,Faculty才能调用其类方法之一。


其次,不需要toString在类外声明方法;它可以像其他人一样被包括在内。


第三,我认为可以通过使用模板文字来简化/澄清方法本身。


const DEFAULT_NAME = "name_unknown";

const DEFAULT_DEPARTMENT = "department_unknown";


class Faculty {

    constructor(name, dept) {   

        this.name = name || DEFAULT_NAME;

        this.dept = dept || DEFAULT_DEPARTMENT;

    }

    getName() {

        return this.name;

    }

    getDept() {

        return this.dept;

    }


    setName(name) {

        this.name = name;

    }

    

    setDept(dept) {

        this.dept = dept;

    }

    

    toString() {

        return `${this.name} of ${this.dept}`

    }

}


//With name and department

const faculty = new Faculty("John Smith", "Department XYZ");

console.log(faculty.toString());


//Without name and department

const faculty_default = new Faculty();

console.log(faculty_default.toString());


查看完整回答
反对 回复 2021-11-12
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

您也可以像这样使用默认参数:


class Faculty {

  constructor(name = 'name unknown', dept = 'department unknown') {

    this.name = name;

    this.dept = dept;

  }

  getName() {

    return this.name;

  }

  getDept() {

    return this.dept;

  }


  setName(name) {

    this.name = name;

  }

  setDept(dept) {

    this.dept = dept;

  }


  toString() {

    return `${this.name} of ${this.dept}`;

  }

}


const f = new Faculty('Alex', 'Maths');

console.log(f.toString());


查看完整回答
反对 回复 2021-11-12
  • 3 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信