firebug的一个有趣现象介绍


Posted in Javascript onNovember 30, 2011
var obj = {length:0,splice:function(){}} 
console.log(obj)

猜猜上面会打印出啥?
没错,打印出来的看起来是一个空数组。。。
在FIREBUG里如果一个对象同时拥有length属性和splice方法,就会被firebug显示为数组的形式。。。
如果以前注意过的话就会发现JQUERY就是这么写的,通过选择器打印出来的看起来跟数组一样。
一直以来我都很好奇为毛返回的数组,但是却有数组根本没有的方法,也没有数组该有的方法,比如:pop等
最后通过查资料才发现这么一个有趣的现象。。
但是在IE下面打印出来的就是正常的[Object Object]了。
于是就可以这么玩一下。。。。
var push = Array.prototype.push; 
var splice = Array.prototype.splice; 
var a = function() { 
var a = function(name) { 
return new a.fn.init(name) 
} 
a.fn = a.prototype; 
a.fn.init = function(name) { 

var arr = document.getElementsByTagName(name); 


merge(this,arr); 

} 
a.fn.splice = splice; 
a.fn.init.prototype = a.fn; 
return a; 
}() 
function merge(first, second) {//完全抄袭jquery中的merge方法- - 
var i = first.length || 0, j = 0; 
if( typeof second.length === "number") { 
for(var l = second.length; j < l; j++) { 
first[i++] = second[j]; 
} 
} else { 
while(second[j] !== undefined) { 
first[i++] = second[j++]; 
} 
} 
first.length = i; 
return first; 
} 
a.fn.css = function(pop, val) { 
for(var i = 0; i < this.length; i++) { 
if(this[i].nodeType===1){ 
this[i].style[pop] = val; 
} 
} 
return this; 
} 
var ab = a('div'); 
ab.css('backgroundColor', '#444444').css('borderWidth', '2px').css('borderStyle', 'solid')

于是,山寨版jquery并且只支持tagName选择器并且只有山寨CSS方法的一个库就诞生了。。
Javascript 相关文章推荐
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
Mar 12 Javascript
CSS中position属性之fixed实现div居中
Dec 14 Javascript
jQuery实现订单提交页发送短信功能前端处理方法
Jul 04 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
Jun 20 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
Oct 12 Javascript
Vue 源码分析之 Observer实现过程
Mar 29 Javascript
vue 做移动端微信公众号采坑经验记录
Apr 26 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
Oct 26 Javascript
微信小程序textarea层级过高的解决方法
Mar 04 Javascript
彻底揭秘keep-alive原理(小结)
May 05 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
Sep 28 Javascript
js前端面试常见浏览器缓存强缓存及协商缓存实例
Jun 21 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
Nov 30 #Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
Nov 30 #Javascript
chrome原生方法之数组
Nov 30 #Javascript
使用Javascript接收get传递的值的代码
Nov 30 #Javascript
关于递归运算的顺序测试代码
Nov 30 #Javascript
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
Nov 30 #Javascript
Jquery插件之打造自定义的select标签
Nov 30 #Javascript
You might like
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
2015/08/23 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
使用python装饰器验证配置文件示例
2014/02/24 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
公司道歉信范文
2014/01/09 职场文书
上课看小说检讨书
2014/02/22 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
2014年财政所工作总结
2014/11/22 职场文书
2015年营业员工作总结
2015/04/23 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
Windows下redis下载、redis安装及使用教程
2021/06/02 Redis