二二、函数调用模式案例
来源:互联网 发布:网络监控技术员 编辑:程序博客网 时间:2024/06/06 19:34
<script> 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(); </script>
上文中的输出结果为:
<script> // 1, 读取代码, 然后预解析, 得到 Foo 函数与 getName 函数 function Foo(){ getName = function(){ alert(1); }; return this; } function getName(){ alert(5); } Foo.getName = function(){ alert(2); }; Foo.prototype.getName = function(){ alert(3); }; var getName = function(){ alert(4); }; // 覆盖前面的 getName function getName(){ alert(5); } Foo.getName(); // = 2 getName(); // = 4 Foo().getName(); // 首先是 函数调用模式, 因此返回 this 即 window 全局对象 // 同时给 getName 重新赋值, 在函数 Foo 中没有 getName 的声明 // 因此修改的是外面的 getName // 所以最终是 全局的 window 调用 getName 即 就是 getName 的函数调用模式 // = 1 getName(); // = 1 new Foo.getName(); // = 2 new Foo().getName(); // = 3 new new Foo().getName(); // = 3 // 如果不清楚, 猜测有两种可能 // new ( new Foo() ).getName() // new ( new Foo().getName() ) // 不可能是这样的结合形式</script>
0 0
- 二二、函数调用模式案例
- 分析函数案例二
- 浅谈函数调用(二)
- ExtJS学习:MVC模式案例(二)
- ExtJS学习:MVC模式案例(二)
- 简化函数调用(二)
- 函数的递归调用二
- 透过android案例熟知状态模式(二)
- c++函数调用约定学习(二)
- C语言函数栈调用二
- clips系列二-clips调用外部函数
- 汇编语言入门八:函数调用(二)
- 优化案例二
- 项目案例分析二
- JBPM案例详解(二)
- socket案例二
- ViewPager 案例(二)
- 盒子模型案例二
- 删除文件及文件夹下文件
- 编写shellcode(vs2017)
- 浅谈Java SE、Java EE、Java ME三者的区别
- 深度学习 15. 全连接和区域连接,fully connected 和 local connected, 解释说明(最简单的解释)
- 【23种设计模式】之 目录
- 二二、函数调用模式案例
- 从外网访问内网服务器
- 怎么让self.view的Y从navigationBar下面开始计算
- jzoj 5086. 【GDOI2017第四轮模拟day1】数列 搜索+meet in the middle
- 日期格式转换
- angularjs和vuejs的区别
- eclipse j33 neon 简单配置
- 工厂模式
- 获取根视图转换为view