题目如下:
function Foo() {
getName = function () {
console.log (1);
};
console.log('this is'+this)
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();
② getName();
③ Foo().getName();
④ getName();
⑤ new Foo.getName();
⑥ new Foo().getName();
⑦ new new Foo().getName();
题目的答案为① Foo.getName(); // 2
②getName(); // 4
③Foo().getName(); // 1
④getName(); // 1
⑤new Foo.getName(); // 2
⑥new Foo().getName(); //3
⑦new new Foo().getName(); // 3
解析:
//第一部分:一个构造函数里面有个全部变量getName 指向一个匿名函数
function Foo() {
getName = function () {
console.log (1);
};
return this;
}
// 第二部分:构造函数的一个属性getName 指向一个匿名函数
Foo.getName = function () {
console.log (2);
};
// 第三部分:构造函数的原型上有个getName方法
Foo.prototype.getName = function () {
console.log(‘baidu’ && ‘google’);
};
// 第四部分:定义一个变量指针指向一个匿名函数
var getName = function () {
console.log (4);
};
// 第五部分:声明一个叫getName的有名函数