
3道值得收藏的Javascript题目,你理解吗?
发布日期:2021-05-13 07:41:52
浏览次数:19
分类:博客文章
本文共 1389 字,大约阅读时间需要 4 分钟。
第一道:
function foo(){ foo.abc = function(){alert('Alibaba')} this.abc = function(){alert('Alimama')} abc = function(){alert('Alipay')}; var abc = function(){alert('Taobao')}}foo.prototype.abc = function(){alert('Alisoft');}foo.abc = function(){alert('Yahoo');}var obj = new foo();obj.abc();foo.abc();abc();
我们就直接针对这输出按顺序进行分析,
执行顺序
1.foo.prototype.abc = function(){alert('Alisoft');}//这样之后,我们就可以用obj.abc();不懂prototype原型的,可以看这个2.foo.abc = function(){alert('Yahoo');}//alert yahoo3.var obj = new foo();//创建一个foo的实例obj,同时,执行了foo函数,也就是obj.abc() = function(){alert('Alimama')}4.foo.abc = function(){alert('Alibaba')}//foo.abc是foo类的静态方法,在实例化foo后执行了代码片段foo.abc = function()//覆盖了原来的foo.abc = function(){alert('Yahoo');},所以foo.abc()输出alibaba5.this.abc = function(){alert('Alimama')}//这句话把function(){alert('Alimama')赋给了obj.abc,所以obj.abc输出alimama6.abc = function(){alert('Alipay')}; var abc = function(){alert('Taobao')};//这两句一起分析,如果没有下一句,那么abc是个全局变量,abc输出alipay//但是因为下一句var abc之后,abc的作用域被限制在foo类里,所以外部的abc()会显示未定义.
alimama alibaba undefined
第二道:
f = function () { return true ; };g = function () { return false ; };( function () { if (g() && [] == ! []) { f = function f() { return false ; }; function g() { return true ; } }})();alert(f()); // true or false ?
true
第三道:
var o = { m: function () { return this .length; }, length: 1 }; var m = o.m;alert(m()); // 请问输出什么? 并解释为什么。
0
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月22日 22时39分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
51单片机汇编程序——查表
2019-03-11
复杂指针的定义(含复杂函数指针)
2019-03-11
小程序提交新数据后如何返回上一页并刷新数据?
2019-03-11
qt c++实现的ai贪吃蛇吃满屏幕,超详细!(二)ai的具体实现
2019-03-11
linux 查看log日志相关命令
2019-03-11
IDEA 2019 安装 mybatis-plus插件
2019-03-11
div 实现光标悬停变成手型
2019-03-11
layer.confirm 无效
2019-03-11
Java 回调机制
2019-03-11
7、回归和特征选择
2019-03-11
pycharm使用(新建工程、字体修改、调试)
2019-03-11
什么是Numpy、Numpy教程
2019-03-11
Python学习笔记——元组
2019-03-11
异常声音检测
2019-03-11
PCB学习笔记——AD17如何添加新的封装
2019-03-11
PCB学习笔记——AD17对芯片悬空引脚的操作
2019-03-11
numpy版本问题
2019-03-11
无法打开文件“opencv_world330d.lib”的解决办法
2019-03-11