js Object

为了给上述的观点提供足够的佐证,请分别在webkit浏览器和非webkit浏览器中执行randomOne,横向对比两者的运算结果,就会发现在webkit中,遍历对象,输出数据的顺序是从小到大,而在非webkit中,则是按照存贮的先后顺序逐个输出。在这一点上,webkit事实上是把带有可转为number类型的key序列当做数组来处理的,以下更有说服力的代码:

var o = {};
o['s'] = '先存储的数据';
o[1] = '后存储的数据';
for(var i in o){
    alert(o[i])
}

webkit中的结果:'后存储的数据' -> '先存储的数据',非webkit中的结果:'先存储的数据' -> '后存储的数据'。

下面是一个例子

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>demo</title>
<script src="http://files.cnblogs.com/zhenn/yui-min.js" type="text/javascript"></script>
<style type="text/css">
*{margin:0;padding:0;}
h1{font-size:24px;}
#wrapper{width:800px;margin:50px auto;color:#555;}
ul{font:40px/1.5 arial;font-weight:700;margin-top:20px;float:left;}
ul li{float:left;margin-right:20px;list-style:none;color:#f00;}
ul li.blue{color:blue;}
button{border:1px solid #d5d5d5;margin:20px 250px 0 0;float:right;}
h4{clear:left;font-size:24px;}
</style>
</head>

<body>
<div id="wrapper">
	<h1>object存贮数据的无序性</h1>
	<ul>
		<li></li>
		<li></li>
		<li></li>
		<li></li>
		<li></li>
		<li></li>
		<li class="blue"></li>
	</ul>
	<button class="btn">重选一注</button>
	<h4>分别用webkit浏览器和非webkit浏览器打开,查看数字排序</h4>
</div>
<script>
	var randowNumber = {
		state: 0,
		refresh: document.getElementById('wrapper').getElementsByTagName('button')[0],
		boxes: document.getElementById('wrapper').getElementsByTagName('li'),
		init: function(){
			var that = this;
			that.ballRandom();
			that.refresh.onclick = function(){
				that.ballRandom();
			};
		},
		//产生一个随机字符串,如:01 22 23 12 13 02 07
		randomOne: function(){
			var that = this;
			var i = 0 , obj = {} , str = '';
			while(i < 7){
				if(i < 6){
					var num = Math.ceil(33 * Math.random());
				}else{
					var num = Math.ceil(16 * Math.random());
				}
				if(obj[num]) continue;
				obj[num] = that.padding(num);
				i ++;
			}
			for(var j in obj){
				str += obj[j] + ' ';
			}
			return str.substring(0,str.length - 1);
		},
		//填充字符串
		padding: function(str){
			if(typeof str != 'number') return;
			if(str < 10){
				str  = '0' + str;
			}else{
				str = str.toString();
			}
			return str;
		},
		//重新渲染dom
		render: function(){
			var that = this;
			var arr = that.randomOne().split(' ');
			for(var i=0,len=that.boxes.length;i<len;i++){
				that.boxes[i].innerHTML = arr[i];
			}
		},
		//随机数产生的过程并渲染在dom上
		ballRandom: function(){
			var that = this;
			if(!that.state){
				that.timer = setInterval(function(){
					if(that.state == 50){
						clearInterval(that.timer);
						that.state = 0;
					}else{
						that.render();
						that.state ++;
					}
				},20);	
			}
		}
	};
	randowNumber.init();
</script>
</body>
</html>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值