我使用JavaScript时遇到的一个非常令人费解的问题.看下面的代码..
az={
classes:{
test:function(){
this.hello=function(name){
alert('hello '+name);
}
}
},
getClass:function(name){
return az.classes[name];
}
};
var a=new az.classes['test']();
a.hello('foo');
var b= new az.getClass('test')();
b.hello();// fails !!!
Run Code Online (Sandbox Code Playgroud)
在代码中,如果您注意到我们在对象中定义了一个类az.classes.当尝试用new创建该类的实例时az.classes['test](),它可以正常工作并a.hello()执行.但是当我调用方法时az.getClass('test'),它又返回相同的构造函数,但是当我var b=new az.getClass('test');在这里说它的说法b是undefined!! 并b.hello()失败!我不明白这种行为!是什么样的新的区别az.classes['test']()和新的az.getClass('test').他们不是一回事吗?
我有javascript数组的这种有线行为.我的目标是从另一个数组创建一个新数组.我的方法是遵循;
Array.prototype.constructor.apply(Array, [1,2])
Run Code Online (Sandbox Code Playgroud)
它创建了一个新的数组,其中包含2个元素[1,2],但工作正常,但是当我放置这样的东西时...
Array.prototype.constructor.apply(Array, [3])
Run Code Online (Sandbox Code Playgroud)
那就是创建一个包含一个元素的数组,即[3] ...它创建
[undefined,undefined,undefined]
Run Code Online (Sandbox Code Playgroud)
就是它创建了一个包含3个空元素的数组!! 知道为什么吗?以及如何以这种方式创建一个新的数组对象?
javascript ×2