在JS方法中,'new' 有什么作用?

12 浏览
0 Comments

在JS方法中,'new' 有什么作用?

这两种方法有什么区别?\n

function ObjectB() {
    this.methodA = new function() {
        alert('a');
    };
    this.methodB = function() {
        alert('b');
    };
}

\n我的问题是,JS方法中的new有什么效果?\n我在一个fiddle中尝试了这些方法的行为,并添加了以下代码:\n

var v = Object.create(ObjectB);
v.methodC = function() {
    alert('c');
}
v.methodB();
v.methodA();
v.methodC();

\n但我的fiddle似乎不起作用。\nFiddle在这里:http://jsfiddle.net/N8SNG/\n谢谢 🙂

0
0 Comments

在JavaScript中,使用new关键字可以创建对象。这个关键字通常用在函数上,这些函数被称为构造函数。当使用new关键字调用一个匿名函数时,会创建一个"object"类型的对象。当指定构造函数的名称时,会根据构造函数的类型创建一个对象。例如,使用以下代码创建一个"Human"类型的对象:

function Human(){};
man=new Human();

在这里,man是"Human"类型的对象,或者更准确地说,man是Human的一个实例。通过使用instanceof操作符,可以判断一个对象是否是某个类型的实例。例如,man instanceof Human。

问题的出现是因为在使用new关键字创建对象时,可能会遇到一些问题。为了解决这些问题,可以采取以下方法:

1. 确保在使用new关键字时,后面跟着的是一个构造函数。构造函数通常是一个命名函数,而不是匿名函数。

2. 确保构造函数内部有正确的代码逻辑,以确保对象被正确地初始化。

3. 在使用new关键字创建对象之前,先了解构造函数的作用和功能,以避免出现意外情况。

通过遵循上述方法,可以正确地使用new关键字创建对象,并避免出现潜在的问题。

0
0 Comments

在这段代码中,出现了一个问题:使用new关键字调用函数后,函数被当作构造函数进行调用,返回一个对象作为methodA的值。因此,methodA实际上是一个对象,其匿名函数相当于其类。

为了解决这个问题,可以将new关键字删除,直接将函数赋值给methodA,如下所示:

this.methodA = function() {
    alert('a');
};

这样,methodA将被视为一个方法,而不是一个对象。当调用methodA时,将弹出alert('a')

0