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

创建一个香蕉对象

创建一个香蕉对象

拉莫斯之舞 2023-10-14 15:52:46
最近遇到一个面向对象编程的问题,我想不出来。以下是说明:1. create a banana object2. all bananas are yellow3. all bananas have a length and diameter which are set at instatiation4. bananas also have isYummy property, which is set to true, because all bananas are yummy.5. all bananas have the ability to rot, which toggles isYummy to false.我真的不熟悉实例化长度和直径以及函数的含义。这是我的方法。    const Banana = (color, length, diameter, isYummy) => {        this.color = 'yellow';        this.length = length;        this.diameter = diameter;        this.isYummy = true    }    let rot = new Banana('yellow', length, diameter, false)
查看完整描述

3 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

const Banana = (color, length, diameter, isYummy) => {

        this.color = 'yellow';

        this.length = length;

        this.diameter = diameter;

        this.isYummy = true

    }


    let rot = new Banana('yellow', length, diameter, false)

所有香蕉都是黄色的,所以你不需要参数中的颜色,而且 isYummy 最初设置为 true,所以你也不需要它。您唯一的输入是长度和直径。(好久没写JS了,语法不太记得了)


const Banana = (length, diameter) => {

        this.color = 'yellow';

        this.length = length;

        this.diameter = diameter;

        this.isYummy = true

    }


    let myBanana = new Banana(length, diameter)

香蕉也会腐烂,这是一种行动,而行动自然是方法。js中的实例方法是对象的原型。


在在线编译器中,我对你的代码有疑问,所以我像这样重写它:


如果 Banana 使用该编译器中的函数编写,则它可以是对象。


const Banana = function (length, diameter) {

        this.color = 'yellow';

        this.length = length;

        this.diameter = diameter;

        this.isYummy = true

    };

然后你需要向其添加一个操作(注意,如果你使用 => 箭头函数,this上下文将会不同,而不是对象的上下文。所以要小心)


Banana.prototype.rot = function(){this.isYummy = false;}

现在从我们刚刚定义的对象创建我们的香蕉。


let myBanana = new Banana(20, 3);

console.log(myBanana.isYummy);

现在让它腐烂:


myBanana.rot();

console.log(myBanana.isYummy);

const Banana = function (length, diameter) {

            this.color = 'yellow';

            this.length = length;

            this.diameter = diameter;

            this.isYummy = true

        };

    

Banana.prototype.rot = function(){this.isYummy = false;}


let myBanana = new Banana(20, 3);


console.log(myBanana.isYummy);


myBanana.rot();


console.log(myBanana.isYummy);


查看完整回答
反对 回复 2023-10-14
?
潇湘沐

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

您可以在构造函数中创建一个具有默认值的类,如下所示:


class Banana{

  constructor(length, diameter){    

    this.color = 'Yellow';

    this.length = length;

    this.diameter = diameter;

    this.isYummy = true; 

  }

}


var myBanana = new Banana('10cm', '2cm');

// to toggle rot or isYummy property

myBanana.isYummy = false;

console.log(myBanana) // to see your object in console


查看完整回答
反对 回复 2023-10-14
?
DIEA

TA贡献1820条经验 获得超2个赞

目前尚不清楚您需要什么帮助,但以下是我注意到的一些问题:

  • 据我所知,箭头函数不能是构造函数。尝试实例化是Banana行不通的。

  • this.color并且在开始时this.isYummy总是设置为 true,因此不需要将相应的参数传递到构造函数中

  • 我猜你误解了这rot件事 - 它可能并不意味着是一个单独的变量或属性,而只是一些逻辑,例如将属性设置isYummy为 false 的超时:

setTimeout(() => { this.isYummy = false }, 1000); // rot after one second

将其放在构造函数的末尾。


查看完整回答
反对 回复 2023-10-14
  • 3 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

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