“新”在JS方法中有什么影响?

时间:2013-05-03 11:50:01

标签: javascript

这两种方法有什么区别?

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

我想问的是,在JS方法中有什么影响?

我已经做了一个小提琴,我想探索方法的行为,我也添加了这段代码:

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

v.methodB();
v.methodA();
v.methodC();

但我的小提琴似乎不起作用。

小提琴在这里:http://jsfiddle.net/N8SNG/

谢谢:)

2 个答案:

答案 0 :(得分:3)

methodA不是方法,因为new运算符会导致后面的函数被调用为构造函数。因此,您将使用匿名函数返回methodA的对象作为其类的等效函数。

就好像你写了这个:

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

最后一行与此相同:

this.methodA = new MethodA();

答案 1 :(得分:0)

New用于创建对象的函数。这些函数构造函数。 当 function 创建函数时, new function 会创建对象。 当您使用匿名函数时,您创建一个类型为“对象”的对象。指定构造函数的名称时,可以创建该类型的对象:例如

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

man 属于“人类”,或者更好人类的一个实例:

man instanceof Human