您的位置:首页 > Web前端 > JavaScript

自学javascript笔记_自用_解析W3school的代码_JS对象

2016-02-18 21:51 489 查看
我一直很好奇这个基于Prototype的语言的整个结构,如果只学表面的,那只能是盲人摸象了。但毕竟是初学者,想抓住主要结构,还是需要学习更多的表面的。

<!DOCTYPE html>
<html>
<body>
<p>点击下面的按钮,循环遍历对象 "person" 的属性。</p>
<button onclick="myFunction()">点击这里</button>
<p id="demo"></p>

<script>
function myFunction()
{
var x;
var txt="";
var person={fname:"Bill",lname:"Gates",age:56};

for (x in person)
{
txt=txt + person[x];
}

document.getElementById("demo").innerHTML=txt;
}
</script>
</body>
</html>


这里是对象的for in循环,在对象的循环中,可以把对象当成是一个数组,是一个结构体的数组。数组的长度是对象的属性个数。这样就可以完全的通过循环遍历一个对象的每一个属性的值,而且不要用到每一个属性的名字。(渐渐的不要再把JavaScript对象当做类了)很神奇。

JavaScript的数字跟其他的语言不同。首先它只有一个类型,不分整型,长整型,浮点型什么的。(JavaScript 不是类型语言)

整数(不使用小数点或指数计数法)最多为 15 位。//多次测试var x=123456789012345678901.。。等,结果都不一样,我也不理解。

小数的最大位数是 17,但是浮点运算并不总是 100% 准确 var a=0.1.var b=0.2.相加的话是等于0.3000000000001后面可能多个数字?!~我也不理解为啥,但是乘以10再除以10就会消除这个问题。

var y=0377;
var z=0xFF;

y此时是八进制数,z是十六进制数。好像没提到有二进制的。应该有,因为后面有位运算。数字对象有很多属性和方法。我目前只用过nan属性,判断值是不是数字类型的。还有很多,暂时我还不理解。数字对象的方法属性在这里:http://www.w3school.com.cn/jsref/jsref_obj_number.asp

字符串之前用了好多了,基本用法当然也要参考手册了,很多有意思的方法和属性可以直接使用还真是棒棒的。比如:

字符串长度:x.length

字符串添加样式:x.big() 大号字体;x.small()小号字体;x.bold()加粗;x.italics()斜体;x.blink()一闪一闪的,不过我在几个浏览器用了都不能够正常显示。

还有加颜色,划线,加超链接,上标,下标,改变字形等等等等。。。这些在html里都是要加各种标签的,现在可以在JavaScript里用方法来实现,可以通过id找到要改变的元素。

另外还有字符串的各种匹配索引方法都可以直接使用的,记得查找参考手册啦!http://www.w3school.com.cn/jsref/jsref_obj_string.asp

日期对象的方法属性真的是方便,我在C++里从来是束手无策的,当然主要是因为我是菜鸟啦。

在script标签里直接使用date()方法:document.write(Date()),可以直接显示完整时间的:

我此时显示的是:Thu Feb 18 2016 19:57:47 GMT+0800

x.setTime();//从1970年到此时此刻过了多少毫秒数。不知道用处大不大。我写到此时此刻:从 1970/01/01 至今已过去 1455796815728 毫秒

x.setFullYear(xxxx,xx,xx) 设置具体的日期。然后在用这个日期调用getTime函数,就会计算两者直接的毫秒数啦。

我在想怎么在文章里直接可以看到呢?

<html>
<head>
<script type="text/javascript">
function startTime()
{
var today=new Date()
var h=today.getHours()
var m=today.getMinutes()
var s=today.getSeconds()
// add a zero in front of numbers<10
m=checkTime(m)
s=checkTime(s)
document.getElementById('txt').innerHTML=h+":"+m+":"+s
t=setTimeout('startTime()',500)
}

function checkTime(i)
{
if (i<10)
{i="0" + i}
return i
}
</script>
</head>

<body onload="startTime()">
<div id="txt"></div>
</body>
</html>
这里要说明的是这里的函数都是提前那什么的,不想C语言是按顺序执行的,然后使用前必须要声明或者直接定义。这里的话没有这样的,所有的函数都是在页面进入之前已经加载好了吧(加载这个词用的不当啊)。然后上面看到有三个Date方法和一个
setTimeout('startTime()',500)
这句的意思是每500毫秒调用一次startTime函数,这样就是一个简单的钟表。要是定义成2000,那就是每两秒刷新一次钟表的时间啦。

在onload上执行这个函数,只要页面准备完成就开始了显示钟表。

另外:1,月份是从0定义到11的,所以5指代六月,11指代12月。

2,日期对象的变量是直接可以比较大小的

数组
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: