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 相关文章推荐
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
Jan 11 Javascript
js操作时间(年-月-日 时-分-秒 星期几)
Jun 20 Javascript
Extjs4中的分页应用结合前后台
Dec 13 Javascript
在JS数组特定索引处指定位置插入元素
Jul 27 Javascript
JavaScript中合并数组的N种方法
Sep 16 Javascript
javascript瀑布流式图片懒加载实例
Jun 28 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
Jul 28 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
Oct 26 Javascript
js实现本地时间同步功能
Aug 26 Javascript
JavaScript Canvas编写炫彩的网页时钟
Oct 16 Javascript
用Angular实现一个扫雷的游戏示例
May 15 Javascript
vue el-table实现递归嵌套的示例代码
Aug 14 Vue.js
兼容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 fread()使用技巧
2010/01/22 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
php获取json数据所有的节点路径
2015/05/17 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
js跳转页面方法实现汇总
2014/02/11 Javascript
Javascript中call与apply的学习笔记
2014/09/22 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
2016/10/14 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
vue cli 全面解析
2018/02/28 Javascript
Node.js进阶之核心模块https入门
2018/05/23 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
mysql 之通过配置文件链接数据库
2017/08/12 Python
python3实现随机数
2018/06/25 Python
Flask框架响应、调度方法和蓝图操作实例分析
2018/07/24 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
python 实现生成均匀分布的点
2019/12/05 Python
python中图像通道分离与合并实例
2020/01/17 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
门诊挂号室室长岗位职责
2013/11/27 职场文书
自我评价范文分享
2014/01/04 职场文书
2014党支部对照检查材料思想汇报
2014/10/05 职场文书
新郎接新娘保证书
2015/05/08 职场文书
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript