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 相关文章推荐
验证手机号码的JS方法分享
Sep 10 Javascript
js换图片效果可进行定时操作
Jun 09 Javascript
详解参数传递四种形式
Jul 21 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
Oct 09 Javascript
js操作数据库实现注册和登陆的简单实例
May 26 Javascript
Vue.js表单控件实践
Oct 27 Javascript
利用vue-router实现二级菜单内容转换
Nov 30 Javascript
微信小程序实现城市列表选择
Jun 05 Javascript
React中使用UEditor百度富文本的方法
Aug 22 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
Feb 21 Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 Javascript
React 并发功能体验(前端的并发模式)
Jul 01 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
JAVA/JSP学习系列之四
2006/10/09 PHP
PHP生成Flash动画的实现代码
2010/03/12 PHP
linux中cd命令使用详解
2015/01/08 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
ES6新特征数字、数组、字符串
2016/10/01 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
python执行shell获取硬件参数写入mysql的方法
2014/12/29 Python
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
Python三元运算实现方法
2015/01/12 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
Python中的is和==比较两个对象的两种方法
2017/09/06 Python
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
深入理解Django-Signals信号量
2019/02/19 Python
python itchat实现调用微信接口的第三方模块方法
2019/06/11 Python
Python自省及反射原理实例详解
2020/07/06 Python
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
葡萄牙语专业个人求职信
2013/12/10 职场文书
体育活动总结范文
2014/05/04 职场文书
高中综合实践活动总结
2014/07/07 职场文书
学风建设演讲稿
2014/09/12 职场文书
迎国庆横幅标语
2014/10/08 职场文书
实习生个人总结范文
2015/02/28 职场文书
幼师求职自荐信
2015/03/26 职场文书
聚会通知怎么写
2015/04/23 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
mysql 带多个条件的查询方式
2021/06/05 MySQL
MongoDB数据库常用的10条操作命令
2021/06/18 MongoDB