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 相关文章推荐
JavaScript学习笔记之获取当前目录的实现代码
Dec 14 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
Jan 15 Javascript
jQuery操作元素css样式的三种方法
Jun 04 Javascript
js判断文本框剩余可输入字数的方法
Feb 04 Javascript
jQuery获得指定元素坐标的方法
Apr 14 Javascript
JS实现可展开折叠层的鼠标拖曳效果
Oct 09 Javascript
javascript RegExp 使用说明
May 21 Javascript
Angularjs中使用layDate日期控件示例
Jan 11 Javascript
AngularJs上传前预览图片的实例代码
Jan 20 Javascript
微信小程序实现图片选择并预览功能
Jul 25 Javascript
vue-router 中 meta的用法详解
Nov 01 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
Feb 10 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
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
php简单获取复选框值的方法
2016/05/11 PHP
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
Express的路由详解
2015/12/10 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
2017/03/27 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
腾讯公司的一个sql题
2013/01/22 面试题
销售冠军获奖感言
2014/02/03 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
物控部经理职务说明书
2014/02/25 职场文书
倡议书格式范文
2014/04/14 职场文书
2014年教师节活动总结
2014/08/29 职场文书
项目负责人岗位职责
2015/02/15 职场文书
2015个人简历自我评价语
2015/03/11 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
实验室安全管理制度
2015/08/05 职场文书
初三化学教学反思
2016/02/22 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers