这里写自定义目录标题
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);
}
/*
以上js预解析步骤:
function Foo() {
getName = function() {
alert(1);
};
return this;
}
遇到
var getName = function() {
alert(4);
};
结果1为:
function Foo() {
getName = function() {
alert(1);
};
return this;
}
var getName
剩下 getName = function() { alert(4); };
结果1遇到
function getName() {
alert(5);
}
结果2为:
function Foo() {
getName = function() {
alert(1);
};
return this;
}
var getName
function getName() {
alert(5);
}
预解析完后开始执行:
结果2执行就遇到 剩下的 getName = function() { alert(4); };
此时:
function getName() {
alert(5);
}
重新赋值 getName = function() { alert(4); };
结果3 代码为 :
function Foo() {
getName = function () { alert(1); };
return this;
}
var getName;
Foo.getName = function () { alert(2); };
Foo.prototype.getName = function () { alert(3); };
getName = function () { alert(4); };
*/
Foo.getName(); // 2
getName(); // 4
Foo().getName(); // 1
getName(); // 1
new Foo.getName() // 2
new(Foo.getName)(); // 2
new Foo().getName(); // 3
(new Foo()).getName(); // 3
new new Foo().getName() // 3
转载自 https://www.cnblogs.com/yaya-003/p/12887535.html