小编use*_*563的帖子

令人费解的Javascript构造函数问题

我使用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');在这里说它的说法bundefined!! 并b.hello()失败!我不明白这种行为!是什么样的新的区别az.classes['test']()和新的az.getClass('test').他们不是一回事吗?

javascript

9
推荐指数
1
解决办法
143
查看次数

奇怪的Javascript Array.prototype.constructor.apply行为

我有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

3
推荐指数
1
解决办法
265
查看次数

标签 统计

javascript ×2