作家
登录

firebug的一个有趣现象介绍

作者: 来源:www.28hudong.com 2013-03-30 00:38:35 阅读 我要评论

复制代码 代码如下: 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方法的一个库就诞生了。。

  推荐阅读

  jquery中dom操作和事件的实例学习-表单验证

很显然,这样做能提升更好的用户体验。 html代码: 复制代码 代码如下: <form method="post" action=""> <div class="int"> <label for="username">用户名:</label> <input type="text" id="username" class="requ>>>详细阅读


本文标题:firebug的一个有趣现象介绍

地址:http://www.17bianji.com/kaifa2/JS/23890.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)