gpt4 book ai didi

javascript - 带私有(private)/公共(public)的单例对象 : Public function dependency problems

转载 作者:行者123 更新时间:2023-12-02 18:26:47 25 4
gpt4 key购买 nike

我刚刚学习 JavaScript,所以我正在制作一个小型玩具应用程序来练习使用它,因为根据我的经验,JavaScript 中的 OOP 与经典语言非常不同。我决定使引擎成为带有一些封装的单例。

我想问的是,如果两个公共(public)函数以某种方式相互依赖,是否有更好的方法来实现这种模式?我想问这个问题是因为我正在使用对象文字实现公共(public)接口(interface),但不幸的是这会导致函数表达式彼此不了解。

或者,我应该完全放弃这个特定模式并以不同的方式实现该对象吗?

这是代码:

function PKMNType_Engine(){
"use strict";

var effectivenessChart = 0;
var typeNumbers = {
none: 0,
normal: 1,
fighting: 2,
flying: 3,
poison: 4,
ground: 5,
rock: 6,
bug: 7,
ghost: 8,
steel: 9,
fire: 10,
water: 11,
grass: 12,
electric: 13,
psychic: 14,
ice: 15,
dragon: 16,
dark: 17,
fairy: 18
};

return {

/**
*Looks up the effectiveness relationship between two types.
*
*@param {string} defenseType
*@param {string} offenseType
*/
PKMNTypes_getEffectivness: function(defenseType, offenseType){
return 1;
}

/**
*Calculates the effectiveness of an attack type against a Pokemon
*
*@param {string} type1 The first type of the defending Pokemon.
*@param {string} type2 The second type of the defending Pokemon.
*@param {string} offensiveType The type of the attack to be received.
*@return {number} The effectiveness of the attack
*/
PKMNTypes_getMatchup: function(type1, type2, offensiveType){
var output = PKMNTypes_getEffectivness(type1, offensiveType) * PKMNTypes_getEffectivness(type2, offensiveType);
return output;
}
};
}

最佳答案

您可以简单地在构造函数内部(或旁边)定义函数,然后将它们“附加”到新实例。这样,函数就可以根据需要自由地相互引用:

function PKMNType_Engine(){
"use strict";

function getEffectiveness(defenseType, offenseType){
return 1;
}

return {
PKMNTypes_getEffectivness: getEffectiveness,

PKMNTypes_getMatchup: function(type1, type2, offensiveType){
var output = getEffectiveness(type1, offensiveType) *
getEffectiveness(type2, offensiveType);
return output;
}
};
}

关于javascript - 带私有(private)/公共(public)的单例对象 : Public function dependency problems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18294392/

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