function Foo() {
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);
};
/**
1. 变量提升
function Foo() {
getName = function () {
console.log(1);
};
return this;
}
var getName;
function getName() {
console.log(5);
};
*
*/
Foo.getName(); // 2
getName(); // 4 变量提升,方法覆盖
Foo().getName(); // 1
getName(); // 1 执行上一行代码的时候,将方法覆盖
new Foo.getName(); // 2
new Foo().getName(); // 3 先执行 new Foo() 实例,再执行原型上的 getName 方法
new new Foo().getName(); // 3 运算符优先级问题
网友评论