gpt4 book ai didi

javascript - 更改对象中的值

转载 作者:行者123 更新时间:2023-12-03 09:48:21 24 4
gpt4 key购买 nike

我是 JavaScript 新手。我想使用这些方法改变正方形的长度。但这不起作用。我不知道为什么。请帮忙,而不仅仅是投票。

// to change sideLength
this.set_sideLength = function(new_sideLength) {
this.sideLength = new_sideLength;
};

var square = new Object();
square.sideLength = 6;
square.set_sideLength = set_sideLength;

// Calculate perimeter
square.calcPerimeter = function() {
return this.sideLength * 4;
};


var p = square.calcPerimeter();

// output
console.log("Perimeter is: " + p + ", if side length is "+ sideLength);

// New ouptput with new sideLength
square.set_sideLength(10);
console.log("Perimeter is: " + p + ", if side length is "+ sideLength);

最佳答案

功能看起来还不错。这是您在旧值上执行的 console.logs,而不是访问对象上的属性。将 sideLength 设置为 10 后,您不会请求新的 calcPerimeter对于那个sideLength。并且您需要访问 square 对象上的 sideLength,例如 square.sideLength

// to change sideLength
this.set_sideLength = function(new_sideLength) {
this.sideLength = new_sideLength;
};

var square = new Object();
square.sideLength = 6;
square.set_sideLength = set_sideLength;

// Calculate perimeter
square.calcPerimeter = function() {
return this.sideLength * 4;
};


var p = square.calcPerimeter();

// output
console.log("Perimeter is: " + p + ", if side length is "+ square.sideLength);

// New ouptput with new sideLength
square.set_sideLength(10);
p = square.calcPerimeter();
console.log("Perimeter is: " + p + ", if side length is "+ square.sideLength);

就像@Felix Kling 提到你可能应该改变

// from
this.set_sideLength = function(new_sideLength) {
this.sideLength = new_sideLength;
};

// to
function set_sideLength(new_sideLength) {
this.sideLength = new_sideLength;
};

根据 this 的实际情况,将函数分配给 this 上的属性可能会产生不同的效果。在您的上下文中可能代表 window 对象。这就是为什么下面的方法有效。

```

square.set_sideLength = set_sideLength;

```

通常,向窗口对象添加属性被认为是不好的做法。因此,您最好使用另一种方法,并将整个事情包装成 IIFE。

像这样

(function () {
'use strict';
// to change sideLength
function set_sideLength(new_sideLength) {
this.sideLength = new_sideLength;
}

var square = new Object();
square.sideLength = 6;
square.set_sideLength = set_sideLength;

// Calculate perimeter
square.calcPerimeter = function calcPerimeter() {
return this.sideLength * 4;
};


var p = square.calcPerimeter();

// output
console.log("Perimeter is: " + p + ", if side length is "+ square.sideLength);

// New ouptput with new sideLength
square.set_sideLength(10);
p = square.calcPerimeter();
console.log("Perimeter is: " + p + ", if side length is "+ square.sideLength);
})();

关于javascript - 更改对象中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30952336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com