我刚开始学习javascript。我发现这些代码在浏览器和运行节点时会有结果。
function Foo() {
this.getName = function () { console.log(1); };
return this;
}
Foo.getName = function () { console.log(2);};
Foo.prototype.getName = function () { console.log(3);};
var getName = function () { console.log(4);};
function getName() { console.log(5);}
Foo.getName(); //2
getName(); //4
Foo().getName(); //1
getName(); //4
new Foo.getName(); //2
new Foo().getName(); //1
new new Foo().getName(); //1
并在浏览器中代码如下
function Foo() {
getName = function () { alert (1); };
return this;
}
Foo.getName = function () { alert (2);};
Foo.prototype.getName = function () { alert (3);};
var getName = function () { alert (4);};
function getName() { alert (5);}
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();
我只是想知道这是怎么发生的?