您的位置:首页 > Web前端 > JavaScript

考察一下你对js继承链的理解

2016-07-22 14:41 399 查看
请深入理解下面的程序,并解释输出结果

运行环境: maxOS,node v6.3.1,  非严格模式运行

var print = function(input){
console.log(input);
}

function Foo(){
getName = function() { print(1)}
return this;
}
Foo.getName = function(){
print(2);
}
Foo.prototype.getName = function(){
print(3);
}
var getName = function(){
print(4);
};
function getName(){
print(5);
}

Foo.getName(); //2
getName(); //4
// Foo().getName(); // function not defined
getName(); //4
new Foo.getName(); //2
new Foo().getName(); //3
new new Foo().getName(); //3


下面是第二个程序,仅修改了一句话:
var print = function(input){
console.log(input);
}

function Foo(){
getName = function() { print(1)}
<span style="background-color: rgb(255, 204, 204);">this.getName = function() { print(0)}</span>
return this;
}
Foo.getName = function(){
print(2);
}
Foo.prototype.getName = function(){
print(3);
}
var getName = function(){
print(4);
};
function getName(){
print(5);
}

Foo.getName(); //2
getName(); //4
Foo().getName(); // 0
getName(); //1
new Foo.getName(); //2
new Foo().getName(); //0
new new Foo().getName(); //0


能够考虑清楚上面程序的输出结果,那么说名你对js的继承链方式理解的差不多啦。 那么,你想通了吗?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: