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 相关文章推荐
jquery offset函数应用实例
Nov 14 Javascript
JS中 用户登录系统的解决办法
Apr 15 Javascript
node.js中的buffer.slice方法使用说明
Dec 10 Javascript
Position属性之relative用法
Dec 14 Javascript
手机端实现Bootstrap简单图片轮播效果
Oct 13 Javascript
怎样判断jQuery当前元素是隐藏还是显示
Nov 23 Javascript
使用JavaScript为一张图片设置备选路径的方法
Jan 04 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
Feb 16 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
Sep 26 Javascript
原生JavaScript实现remove()和recover()功能示例
Jul 24 Javascript
js函数和this用法实例分析
Mar 13 Javascript
JavaScript canvas实现文字时钟
Jan 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
PHP向socket服务器收发数据的方法
2015/01/24 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
JQuery 文本框使用小结
2010/05/22 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/07/18 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
vue组件间通信解析
2017/03/01 Javascript
JavaScript条件判断_动力节点Java学院整理
2017/06/26 Javascript
JavaScript Date对象应用实例分享
2017/10/30 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
[00:52]DOTA2国际邀请赛
2020/02/21 DOTA
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
Python写的一个简单监控系统
2015/06/19 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
python 对key为时间的dict排序方法
2018/10/17 Python
python字典的遍历3种方法详解
2019/08/10 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
土木工程师岗位职责
2013/11/24 职场文书
客服主管岗位职责
2013/12/13 职场文书
参赛口号
2014/06/16 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers