为了账号安全,请及时绑定邮箱和手机立即绑定

js对象,类与原型链问题

js对象,类与原型链问题

呼如林 2019-02-24 14:55:53
function Foo() {    getName = function () { console.log (1); };    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();     //2, 函数的静态方法,直接调用相关函数就可以了。getName();    //4, 变量函数定义在调用之前,成功完成初始化,覆盖函数声明方式定义的同名函数Foo().getName();   //1, 这里 Foo()返回的 this 是 window,在 Foo调用时,对全局的变量型函数 getName 重新定义了,所以得到1。getName();   //1, 上一句改变了全局的 getName 函数为 cosnole.log(1)new Foo.getName();   //2,无参数 new 运算比 . 运算低,所以先运行 Foo.getName,得到2new Foo().getName();   //3,有参数 new 运算和 . 运算同一等级,故从左到右,先运算 new Foo() 得到一个匿名对象,在该对象上调用 getName 函数得到3new new Foo().getName();    //3,同上,先得到匿名对象,然后将该对象的方法 getName 当做构造函数来调用,得到一个新对象,并输出3; 不理解第三个Foo().getName();的解释,为什么下面这两句话没更改Foo()的getName的值呢?后面几个new的求解也不是很明白,什么是有参数无参数呢Foo.getName = function () { console.log (2);};Foo.prototype.getName = function () { console.log (3);};
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 463 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信