// a
function Foo () {
getName = function () {
console.log(1);
}
return this; //this指代window ,new foo 指的是函数内
}
// b
Foo.getName = function () {
console.log(2);
}
// c
Foo.prototype.getName = function () {
console.log(3);
}
// d
var getName = function () {
console.log(4);
}
// e
function getName () {
console.log(5);
}
Foo.getName(); // 2
getName(); // 4 函数声明提升比变量声明提升更高,执行e,d被放最后
Foo().getName(); // 1 Foo() == this , 未声明的变量时,变量声明会提升 getName 被替换了
getName(); // 1 被替换后执行
new Foo.getName(); // 2 Foo.getName() 优先执行
new Foo().getName(); // 3 new Foo() 优先执行, getName 没有this, 这里调用的是原型链 getName
new new Foo().getName(); // 3 先执行 new Foo().getName()
分享一套常见题目
最新推荐文章于 2024-08-12 09:24:46 发布