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 18 Javascript
nullJavascript中创建对象的五种方法实例
May 07 Javascript
jQuery弹出遮罩层效果完整示例
Sep 13 Javascript
jquery动态添加文本并获取值的方法
Oct 12 Javascript
hovertree插件实现二级树形菜单(简单实用)
Dec 28 Javascript
jQuery解析返回的xml和json方法详解
Jan 05 Javascript
基于vue实现分页/翻页组件paginator示例
Mar 09 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
Apr 17 jQuery
老生常谈angularjs中的$state.go
Apr 24 Javascript
jQuery树插件zTree使用方法详解
May 02 jQuery
使用ngrok+express解决本地环境中微信接口调试问题
Feb 26 Javascript
vue根据值给予不同class的实例
Sep 29 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
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
input的focus方法使用
2010/03/13 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
JS中的作用域链
2017/03/01 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
vue单页缓存存在的问题及解决方案(小结)
2018/09/25 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
jQuery实现checkbox全选、反选及删除等操作的方法详解
2019/08/02 jQuery
深入理解令牌认证机制(token)
2019/08/22 Javascript
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
python计算日期之间的放假日期
2018/06/05 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
python批量修改ssh密码的实现
2019/08/08 Python
python 获取计算机的网卡信息
2021/02/18 Python
英国家用电器购物网站:Hughes
2018/02/23 全球购物
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
实习生自我鉴定
2013/12/12 职场文书
英文求职信范文
2014/05/23 职场文书
婚前协议书范本
2014/10/27 职场文书