除了this使用new关键字调用构造函数之外,Javascript中的return语句可以返回一个值的具体情况是什么?
例:
function Foo () {
return something;
}
var foo = new Foo ();
Run Code Online (Sandbox Code Playgroud)
如果我没有弄错,if something是非函数原语,this将被返回.否则something返回.它是否正确?
IOW,可以something采取什么样的价值观(new Foo () instanceof Foo) === false?
可能重复:
C++初始化列表
在选项1和选项2中初始化变量的优缺点是什么?
class MyClass
{
public:
MyClass( float f, char a );
private:
float mFloat;
char mCharacter;
bool mBoolean;
int mInteger;
};
MyClass::MyClass( float f, char a ) : mFloat( f ), mBoolean( true ) // option 1.
{
// option 2
mCharacter = a;
mInteger = 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑:为什么选项2如此常见?
冒号运算符(":")在这个构造函数中做了什么?它等同于MyClass(m_classID = -1, m_userdata = 0);?
class MyClass {
public:
MyClass() : m_classID(-1), m_userdata(0) {
}
int m_classID;
void *m_userdata;
};
Run Code Online (Sandbox Code Playgroud) 我在Sonar上收到了这个警告.我想要解决方法在声纳上删除此警告.我的班级是这样的:
public class FilePathHelper {
private static String resourcesPath;
public static String getFilePath(HttpServletRequest request) {
if(resourcesPath == null) {
String serverpath=request.getSession().getServletContext().getRealPath("");
resourcesPath = serverpath + "/WEB-INF/classes/";
}
return resourcesPath;
}
}
Run Code Online (Sandbox Code Playgroud)
我想要适当的解决方案来消除声纳上的这个警告.
假设我有一个Album班级:
public class Album
{
public string Name {get; set;}
public string Artist {get; set;}
public int Year {get; set;}
public Album()
{ }
public Album(string name, string artist, int year)
{
this.Name = name;
this.Artist = artist;
this.Year = year;
}
}
Run Code Online (Sandbox Code Playgroud)
当我想将数据分配给类型的对象时Album,接下来的两种方法之间有什么区别:
通过构造函数
var albumData = new Album("Albumius", "Artistus", 2013);
Run Code Online (Sandbox Code Playgroud)
或实例化时
var albumData = new Album
{
Name = "Albumius",
Artist = "Artistus",
Year = 2013
};
Run Code Online (Sandbox Code Playgroud) 我有一个带有一些静态函数的辅助类.该类中的所有函数都需要一个"重"初始化函数才能运行一次(就好像它是一个构造函数).
实现这一目标是否有良好的做法?
我唯一想到的是调用一个init函数,并且如果它已经运行一次(使用静态$initializedvar)则会中断它的流程.问题是我需要在每个类的函数上调用它.
我有两个班级父母和孩子
public class Parent {
public Parent() {
System.out.println("Parent Constructor");
}
static {
System.out.println("Parent static block");
}
{
System.out.println("Parent initialisation block");
}
}
public class Child extends Parent {
{
System.out.println("Child initialisation block");
}
static {
System.out.println("Child static block");
}
public Child() {
System.out.println("Child Constructor");
}
public static void main(String[] args) {
new Child();
}
}
Run Code Online (Sandbox Code Playgroud)
上面代码的输出将是
Parent static block
Child static block
Parent initialization block
Parent Constructor
Child initialization block
Child Constructor
Run Code Online (Sandbox Code Playgroud)
为什么Java按该顺序执行代码?确定执行顺序的规则是什么?
python中有复制构造函数吗?如果不是我会做什么来实现类似的东西?
情况是我正在使用一个库,我已经扩展了其中一个类的额外功能,我希望能够将我从库中获取的对象转换为我自己的类的实例.
public class A
{
private static final int x;
public A()
{
x = 5;
}
}
Run Code Online (Sandbox Code Playgroud)
final 表示变量只能分配一次(在构造函数中).static 意味着它是一个类实例.我不明白为什么这是禁止的.这些关键字在哪里相互干扰?
constructor ×10
java ×3
c++ ×2
static ×2
c# ×1
class ×1
copy ×1
final ×1
inheritance ×1
initializer ×1
javascript ×1
new-operator ×1
oop ×1
php ×1
properties ×1
python ×1
sonarqube ×1
static-block ×1