用友畅捷通高级前端笔试题(一)凭借回忆写出
题目1、
下面的html标签
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
......
</ul>
1、用js代码实现li的点击各不相同,不依赖js的库,不能改变li的属性和内容
2、兼容IE firefox chrome等主流浏览器
参考答案
<script> function newFunc() { var ul1 = document.getElementById('ul1'); var lis= ul1.getElementsByTagName("li"); var length=lis.length; for( var i=0;i<length;i++ ) { eval('lis[i].onclick = function (e) {e.stopPropagation();alert('+i+')}'); } } newFunc(); </script>
下面的代码采用闭包模式,但是行不通,有没有谁能告诉我1
1、闭包能不能解决
2、如果闭包能解决,怎么弄。
<script> function fn(i) { return function () { var j = i; alert(j); } } function newFunc() { var ul1 = document.getElementById('ul1'); var lis = ul1.getElementsByTagName("li"); var length = lis.length; for (i = 0; i < length; i++) { lis[i].onclick = function (e) { e.stopPropagation(); fn(i)(); } } } newFunc(); </script>
后来从网上找到的答案
<script> function fn(i) { return function () { var j = i; alert(j); } } function newFunc() { var ul1 = document.getElementById('ul1'); var lis = ul1.getElementsByTagName("li"); var length = lis.length; for (i = 0; i < length; i++) { (function (i) { lis[i].onclick = function () { alert(i); } })(i); } } newFunc(); </script>
经过好几个月的插件编写历程,终于领悟到闭包的用法 (2016年12月3日),感谢勤奋的自己。
一直被闭包困扰的我,终于实现了下面的案例,几乎将近完美的解决方案。
var elems = document.getElementsByTagName('a'); function keep(i){ var keep = i; return function(){ alert(keep); } } for (var i = 0; i < elems.length; i++) { var index elems[i].addEventListener('click', keep(i), 'false'); }
题目2、
如何实现js中的面向对象中的封装继承和多态。
参考答案
参考我的博文
http://www.cnblogs.com/sexintercourse/p/5679303.html
题目3、
如何拷贝一个对象
参考我的博客
http://www.cnblogs.com/sexintercourse/p/5679175.html
题目4、
自定义实现jquery中的bind方法
题目5、
console.log(0==false) true
console.log(1==true) true
console.log(2==false) false
console.log(2==true) false
console.log(undefined==false)false
console.log([] instanceof Array) true
console.log(typeof []=="array") false
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器