JS综合面试题1
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();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();
----分析------
//函数调用前
1、变量提升
先提升 var getName;变量,后提升function getName(){ alert(5);}, 变量名和函数名冲突,变量名将被忽略。
2、函数执行到 getName = function(){ alert(4);}时将重写 全局的getName方法,最终 getName = function(){ alert(4);}
//调用下面的函数执行
Foo.getName(); // 2
getName(); //4
Foo().getName(); //1 该句可写成((Foo()).getName)(), 由于Foo() 修改了全局的getName方法,故 getName = function(){ alert(1); }; 而 Foo()返回值为window,故 最终 window.getName()将 alert出 1
// · 优先级最高,先执行
getName(); //1
new Foo.getName();//2 new (Foo.getName)() --> new (function(){alert(2);})()
new Foo().getName(); //3 (new Foo()).getName() --> foo.getName()调用实例(原型)方法
new new Foo().getName(); //3 new((new Foo()).getName)() --> new (foo.getName)() --> new (function(){alert(3);})()
最新文章
- Util应用程序框架公共操作类(九):Lambda表达式扩展
- sql语句查询最近七天 三十天 数据
- 你必须知道的.NET
- js之封装sort实现json格式数据的排序
- javascript的选项卡
- 201521123076 《Java程序设计》第10周学习总结
- Linux系统下LNMP一键搭建Linux、PHP、MySQL环境(适合新手搭建linux下的web生成环境)
- oracle创建表空间、创建用户并赋予权限
- python新手菜鸟之基础篇
- hdu 1556 A - Color the ball 其他做法
- JS设计模式学习实例之单例模式
- [转] fitnesse中的Map处理
- Mysql中的delimiter详解
- C语言高级程序设计——进制算法以及位算符号
- plsql实例精讲部分笔记
- C++ 类中的静态成员变量,静态成员函数
- C#运算符笔记
- Java编码转换
- 事务的编写规范与Hibernate绑定session
- SZU5