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 相关文章推荐
Prototype使用指南之enumerable.js
Jan 10 Javascript
Javascript里使用Dom操作Xml
Jan 22 Javascript
js中array的sort()方法使用介绍
Feb 20 Javascript
JavaScript判断用户是否对表单进行了修改的方法
Mar 18 Javascript
JavaScript显示当前文档最后修改日期的方法
Mar 19 Javascript
基于jQuery实现仿百度首页选项卡切换效果
May 29 Javascript
Bootstrap表单制作代码
Mar 17 Javascript
JavaScript条件判断_动力节点Java学院整理
Jun 26 Javascript
vue.js中实现登录控制的方法示例
Apr 23 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
May 21 Javascript
微信小程序template模板与component组件的区别和使用详解
May 22 Javascript
手写实现JS中的new
Nov 07 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+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
extjs render 用法介绍
2013/09/11 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
vue移动端实现手机左右滑动入场动画
2020/06/17 Javascript
python异步任务队列示例
2014/04/01 Python
Python正则表达式完全指南
2017/05/25 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
python 两个数据库postgresql对比
2019/10/21 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
Python验证码截取识别代码实例
2020/05/16 Python
Python实现异步IO的示例
2020/11/05 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
C语言变量的命名规则都有哪些
2013/12/27 面试题
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
程序员岗位职责
2013/11/11 职场文书
服务之星获奖感言
2014/01/21 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
医院见习总结
2015/06/24 职场文书
2016情人节宣传语
2015/07/14 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
保安辞职申请书应该怎么写?
2019/07/15 职场文书
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android