【问题标题】:Javascript OOP class object inheritanceJavascript OOP 类对象继承
【发布时间】:2020-12-07 03:51:26
【问题描述】:

下面的 Javascript 代码输出: 员工{#name: "sheila", #gender: "female", #manager: Employee, #job: Job}

如何修复它以使其输出: 员工{#name:“sheila”,#gender:“female”,#manager:“pierre”,#job:“软件工程师”}

不确定是否存在吊装问题。 我要修复哪些行,以便 #manager 是“pierre”而 #job 是“软件工程师”?

class Person{                   
    #name;              
    #gender;                

    constructor(name, gender) {             
        this.#name = name;          
        this.#gender = gender;          
    };              
                    
    setName(name) {             
        this.#name = name;          
    };              
                    
    getName() {             
        return this.#name;          
    };              
                    
    setGender(gender) {             
        this.#gender = gender;          
    }               
                    
    getGender() {               
        return this.#gender;            
    };              
}                   
                    
class Employee extends Person{                  
    #manager;               
    #job;               
                    
    constructor(name, gender, manager, job) {               
        super(name, gender);            
        this.#manager = manager;            
        this.#job = job;            
    };              
                    
    setManager(manager) {               
        this.#manager = manager;            
    }               
                    
    getManager() {              
        return this.#manager;           
    }               
                    
    setJob(job) {               
        this.#job = job;            
    }               
                    
    getJob() {              
        return this.#job;           
    }               
}                   
                    
class Job {                 
    #title;             
                    
    constructor(title) {                
        this.#title = title;            
    };              
}                   
                    
const softwareEngineer = new Job("software engineer");                  
                    
const keith = new Employee("keith", "male");                    
                    
const pierre = new Employee("pierre", "male");                  
                    
const sheila = new Employee("sheila", "female", keith, softwareEngineer);                   
                    
sheila.setManager(pierre);                  
console.log(sheila);                    

【问题讨论】:

  • 好吧,“job”属性是一个对象。你可以给它一个.toString() 方法,这样当它被记录时,它可以产生一个你喜欢的字符串。

标签: javascript oop inheritance instance prototypal-inheritance


【解决方案1】:

问题在于您打印的是对象的类型而不是值。 Job 和 Manager 需要一个 toString 函数来打印值而不是类型,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

【讨论】:

    猜你喜欢
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多