笔试题整理-原型

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)}

Foo.getName()   //调用Foo里的getName(),弹出2
getName()   //直接调用window下的getName(),由于function声明的会提升到上面,所以最后弹出4
Foo().getName() //Foo()调用后返回this,此时指向window,执行过程中window下的getName已被替换为弹出1,所以弹出1
getName()   //弹出1

new Foo.getName()
new Foo().getName()
/*如果构造函数不需要传参数,加不加括号是一样的,
*如果后面有调用,那么new Foo.getName()这样的时候,.的优先级高于new,所以会先执行Foo.getName
*new Foo().getName()会先执行new Foo(),再用实例调用getName*/
new new Foo().getName()

 

你可能感兴趣的:(面试分享,JavaScript实践,技术日常)