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);};
添加回答
举报
0/150
提交
取消