我是一个小型研究小组的成员,正在努力更好地掌握JavaScript的作用.在我们最近关于对象的讨论中,我们已经了解到每次实例化对象时都会重新创建对象的公共方法,而分配给对象原型的方法只创建一次并由所有实例继承.根据我的理解,公共方法和分配给原型的方法都是公开访问的.
那么,我的问题是,如果添加到原型显然更有效,为什么还要创建公共方法呢?公共方法提供的原型没有什么好处?
为什么我们不能将断言用于公共方法?
我在某处读过
"断言在公共方法中是不合适的,因为该方法保证它总是强制执行参数检查.公共方法必须检查其参数是否启用断言.此外,断言构造不会抛出指定类型的异常.它只能抛出一个
AssertionError".
那么,它也不适用于私人方法吗?
我没有清楚地理解上述陈述
先期:我很清楚,R是一个功能性的语言,所以请不要咬;-)
我在很多程序中使用OOP方法都有很棒的经验.现在,我想知道在R中使用S4参考类时是否有办法区分公共方法和私有方法?
setRefClass("B",
field=list(
b.1="numeric",
b.2="logical"
),
methods=list(
thisIsPublic=function(...) {
thisIsPublic_ref(.self=.self, ...)
},
thisIsPrivate=function(...) {
thisIsPrivate_ref(.self=.self, ...)
}
)
)
setRefClass("A",
field=list(
a.1="B"
)
)
Run Code Online (Sandbox Code Playgroud)
注意
我通常不会将实际的方法定义放在类def中,而是将其分离为S4方法(即thisIsPublic_ref),原因如下:
x某个类的实例,您可以调用foo_ref(.self=x)而不是x$foo().compiler::cmpfun()如果你有"普通"的引用类方法,它允许你对我认为不可能的方法进行字节编译.对于这个具体的例子来说,确实没那么复杂是有道理的,但我想我会说明这种方法.
setGeneric(
name="thisIsPublic_ref",
signature=c(".self"),
def=function(
.self,
...
) {
standardGeneric("thisIsPublic_ref")
}
)
setGeneric(
name="thisIsPrivate_ref",
signature=c(".self"),
def=function(
.self,
...
) {
standardGeneric("thisIsPrivate_ref")
} …Run Code Online (Sandbox Code Playgroud) 我有一个Public Class"General",其中是Public Sub"updateDynamics".当我尝试在代码隐藏中引用它时,如下所示:
updateDynamics(get_prospect.dynamicsID)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
对非共享成员的引用需要对象引用
首先请原谅我,如果它是一个非常愚蠢的问题,我只是想学习这种语言的核心.我正在阅读Effective Java,第一章讨论静态工厂方法与构造函数.他们的利弊.很少有令我困惑的事情是:
谢谢.
我有*.dll用C#编写,我需要得到*.dll中包含的所有公共方法或类的列表.有没有办法用C#以编程方式进行?
我有一个用于与我的网络应用程序交互的API,由一个类定义.每个可公开访问的方法都需要在运行前完成身份验证.我不想在每个方法中反复使用相同的行,而是想使用magic __call函数.但是,它只适用于私有或受保护的方法,并且我需要公开才能使用Zend_Json_Server.
class MY_Api
{
public function __call($name, $arguments)
{
//code here that checks arguments for valid auth token and returns an error if false
}
public function myFunction($param1, $param2, $param3)
{
//do stuff when the user calls the myFunction and passes the parameters
//this function must remain public so that Zend_Json_Server can parse it
//but I want it intercepted by a magic method so that the authentication
//can be checked and the system bails before it even gets to …Run Code Online (Sandbox Code Playgroud) 我注意到Smalltalk语言没有私有/受保护方法的概念.所有方法都是公开的.来自Java/C++背景,我认为这是语言的一个基本弱点,因为在Smalltalk中创建的任何应用程序都将完全开放于操作.我猜你可以依靠命名约定来记录公共API和前缀方法,以指示它们是私有的(我相信Squeak会这样做),但它仍然是完全开放的.
这种方法比使用显式访问修饰符来控制对方法调用的访问有什么好处吗?
这是一段代码:
private class myClass
{
public static void Main()
{
}
}
'or'
private class myClass
{
public void method()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我知道,第一个不行.第二个会.
但为什么首先不工作?它有什么具体原因吗?
实际上从这个角度寻找解决方案,这就是为什么要大胆.抱歉
我有一个简单的问题:
class my
{
};
my ob;
Run Code Online (Sandbox Code Playgroud)
编译器允许我创建一个有意义的对象.而且,我知道你不能创建构造函数是私有的对象.
对我来说,它看起来,类中的所有内容private显然不是默认构造函数(因为它允许我创建对象作为默认构造函数应该是public).但令我困惑的是,public课堂上没有任何部分.
那么,public在这种情况下,它是否只创建一个部分,只在其下面放置一个默认构造函数?
或者还有其他事情发生,我的理由是不正确的?
此外,在创建/访问对象时,如何访问公共,私有和受保护的内部组织/跟踪?
我得到了这个问题,因为我从来没有创建过空类的对象.
public-method ×10
c# ×2
java ×2
oop ×2
.net ×1
assert ×1
c++ ×1
class ×1
coding-style ×1
constructor ×1
javascript ×1
object ×1
php ×1
private ×1
prototype ×1
r ×1
reflection ×1
smalltalk ×1
vb.net ×1