我不完全确定如何在JS中实现OOP概念.
我有一个完全在其构造函数中声明的类:
function AjaxList(settings)
{
// all these vars are of dubious necessity... could probably just use `settings` directly
var _jq_choice_selector = settings['choice_selector'];
var _jq_chosen_list = settings['chosen_list'];
var _cb_onRefresh = settings['on_refresh'];
var _url_all_choices = settings['url_choices'];
var _url_chosen = settings['url_chosen'];
var _url_delete_format = settings['url_delete_format'];
var jq_choice_selector_form = _jq_choice_selector.closest("form");
if (DEBUG && jq_choice_selector_form.length != 1)
{
throw("There was an error selecting the form for the choice selector.");
}
function refresh()
{
_updateChoicesSelector();
_updateChosenList();
_cb_onRefresh();
};
AjaxList.prototype.refresh = refresh; // will this be …Run Code Online (Sandbox Code Playgroud) 我有一个问题:这些方法类型有什么区别?
Static , Public , Internal , Protected , const , void
Run Code Online (Sandbox Code Playgroud)
对不起,我的问题对于专业人士来说可能看起来很尴尬,但我真的想了解它们的区别,顺便说一下我搜索和阅读有关它们的文章,但它们都很大而且没有很好地描述,我只需要一个很好的例子,我可以制作决定每次我做一个函数,因为我总是从私有空开始........
另一个翻译问题,这可能更具理论性,但我对设计选择感到好奇.SFNQ:
为什么C#不允许控制访问Java等接口中的方法?例如,在C#界面中:
public void Visit(Axiom axiom);
Run Code Online (Sandbox Code Playgroud)
谢谢.
我试图实现类似以下的东西,但不知道什么是错的:
$.a = function() {
// some logic here
function abc(id) {
alert('test'+id);
}
}
$.a.abc('1');
Run Code Online (Sandbox Code Playgroud)
我尝试使用return函数,但这似乎也没有用.有人可以请帮助.
感谢您的时间.
我刚刚在这里阅读了这篇文章:http://hamletdarcy.blogspot.com/2008/04/10-best-idea-inspections-youre-not.html,最后一点让我想到了我的代码,特别是建议:
世界上有什么公共方法对你的对象做了什么,它不依赖于对象中的任何字段?这肯定是代码味道.问题是检查的"自动修复"是应用static关键字.真是没有.这不是你想要做的.不依赖于对象状态的公共方法不可能是具有明确声明的章程的对象的一部分.它只是没有凝聚力,应该放在其他地方.所以:如果方法是私有的,接受自动修复,但如果方法是公共的,则不要.
有问题的代码本质上是一个对象变换器.它需要一个A类型的对象并将其转换为另一种类型.
我的层次结构是这样的:
接口ObjectTransformer - > GenericObjectTransformer
然后在这下面,GenericObjectTransformer由ObjectTransformerA和ObjectTransformerB扩展
现在,ObjectTransformerA和ObjectTransformerB都需要一些功能,但实际上并不依赖于GenericObjectTransformer的任何实例变量,因此它是GenericObjectTransformer中受保护的静态方法.
这违反了上述规则吗?显然这是受保护的而不是公开的,但它仍然是一种可以从类外部访问的方法,与类本身无关?
有什么想法吗?
如果所有方法都是公共的,除非它们被明确定义为其他方法,是否有必要将方法定义为public?
我必须排除一些类的公共方法被包含在javadoc中.我尝试了Chris Nokleberg的ExcludeDoclet(六分).但是doclet给出了一个小问题:如果类中的其他方法返回List(或任何其他泛型),而不是作为List显示在javadoc中,则返回类型只显示为List(没有通用信息)
任何人都可以给出提示或提供解决此问题的方法吗?
我的静态状态机中有一个方法,只在我的应用程序首次启动时使用一次.该方法需要公开,但我仍然希望隐藏它.有没有办法使用注释或某种方法将方法隐藏在项目的其余部分?
...不包括通用Object的所有公共方法?我的意思是,除了做数组减法.我只是想快速回顾一下有时可以从对象那里获得的内容,而无需访问文档.
public void publicMethod() {
for (i=1;i<10;i++)
privateMethod();
}
private privateMethod() {
something...
}
Run Code Online (Sandbox Code Playgroud)
我需要编写一个JUnit测试用例来验证privateMethod()调用的次数.
public-method ×10
java ×5
c# ×2
javascript ×2
oop ×2
annotations ×1
ant ×1
inheritance ×1
javadoc ×1
jquery ×1
junit ×1
methods ×1
mockito ×1
php ×1
plugins ×1
prototype ×1
reflection ×1
ruby ×1
scope ×1
static ×1
translation ×1