关于javascript:’new’在JS方法中有什么影响?

what effect does the 'new' have in a JS method?

本问题已经有最佳答案,请猛点这里访问。

这两种方法有什么区别?

1
2
3
4
5
6
7
8
function ObjectB() {
    this.methodA = new function() {
        alert('a');
    };
    this.methodB = function() {
        alert('b');
    };
}

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

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

1
2
3
4
5
6
7
8
var v = Object.create(ObjectB);
v.methodC = function() {
    alert('c');
}

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

但我的小提琴似乎没有用。

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

谢谢 :)


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

就好像你写了这样:

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

最后一行与此相同:

1
this.methodA = new MethodA();


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

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

男人是那种"人",或者更好的是人类的一个实例:

人类的人类