3道值得收藏的Javascript题目,你理解吗?
第一道:
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原型的,可以看这个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()输出alibaba
5.this.abc = function(){alert('Alimama')}//这句话把function(){alert('Alimama')赋给了obj.abc,所以obj.abc输出alimama
6.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 ?
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()); // 请问输出什么? 并解释为什么。
m: function() {
return this.length;
},
length: 1
};
var m = o.m;
alert(m()); // 请问输出什么? 并解释为什么。
0
专注iOS、Golang开发。
技术博客:http://xiaopin.cnblogs.com
分类:
Web Javascript
标签:
javascript面试题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?