gpt4 book ai didi

javascript - 在 JavaScript 中编写对象方法的最佳方式是什么?

转载 作者:行者123 更新时间:2023-11-30 08:04:34 24 4
gpt4 key购买 nike

OOP 建议只公开您希望用户能够访问的变量和方法。我一直在为我的对象使用公共(public)方法声明(即原型(prototype))。

DrawShape = function() {

}

DrawShape.prototype.circle = function() {
// draw logic here
}

DrawShape.prototype.square = function() {
// draw logic here
}

这种方法似乎是最有效的,因为每次实例化时都不会重写该方法。然而,我发现要创建良好的 DRY、模块化代码,我必须创建仅供其他方法(即私有(private)方法)访问的方法。

DrawShape = function() {

}

DrawShape.prototype.circle = function() {
var colour = this.setColour();
// draw logic here
}

DrawShape.prototype.square = function() {
var colour = this.setColour();
// draw logic here
}

DrawShape.prototype.setColour = function() {
return "blue";
}

我在这里创建了名为 setColour 的方法,该方法仅供其他方法运行。问题在于该方法是公开的,可以被任何人或任何事物调用。

我可以将方法移动到对象构造函数中......但这意味着我不再节省内存(即每次实例化时都会重写它)并且这也意味着我必须移动所有我的其他方法到构造函数中。

在创建对象方面,JavaScript 中的最佳实践是什么?

最佳答案

IIFE(立即调用的函数表达式)的强大功能:

DrawShape = function() {

}

(function () {
DrawShape.prototype.circle = function() {
var colour = setColour();
// draw logic here
console.log(typeof setColour); // function
}

DrawShape.prototype.square = function() {
var colour = setColour();
// draw logic here
console.log(typeof setColour); // function
}

function setColour() {
return "blue";
}
console.log(typeof setColour); // function
})();
console.log(typeof setColour); // undefined

请注意,如果 this 用于 setColour 函数,您必须使用 this 的当前值调用它,因为你不能合理地将 this 绑定(bind)到一个特定的对象(据我所知,即使 ES6 也没有使这更容易):

setColour.call(this);

不管怎样,那些“你”肯定伤了美国人的眼睛……

关于javascript - 在 JavaScript 中编写对象方法的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20414860/

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