functionFoo(){getName=function(){alert(1);}console.log(this)returnthis;}Foo.getName=function(){alert(2);}Foo.prototype.getName=function(){alert(3);}vargetName=function(){alert(4);}functiongetName(){alert(5);}Foo.getName();//2这里是不是因为构造函数Foo中的getName方法没有this关键字,所以就不是1,而是直接采用外部的方法,意思就是Foo对象调用getName的时候弹出2??getName();//4Foo().getName();//1这里为什么是1呢?是因为Foo返回了this对象,这里的this对象是window,所以这句话的意思不是应该等同window.getName()??那应该是4啊为什么是1getName();//1这里变成1是不是因为3的那一步Foo返回了this对象,所以改变了全局函数getName??所以返回1newFoo.getName();//2newFoo().getName();//3newnewFoo().getName();//35-7不是很理解,解释不出原因。5是不是new关键字其实没起什么作用呢?都只是调用一个方法而已?
一只萌萌小番薯
相关分类