具有全范围的运算符,动态的时钟

时间对象作为非常重要的一个对象,对我们学.net的人来说,并不是很重要,但这并不意味着我们可以忽略,事实上,用得着的时候还是很多的,如果完全依赖JS处理时间,那是会出问题的,因为JS总是假设本地机器上的时间是正确的。还有个原因,他总按照GTM市区来计量。我们只是返回当前date对象的副本,我们即便是修改,那也不会对对象本身有任何影响。

复合赋值运算符

运算符 符号
加法 +=
按位与 &=
按位或 |=
按位异或 ^=
除法 /=
左移 <<=
取模 %=
乘法 *=
右移 >>=
减法 -=
无符号右移 >>>=

复制代码 代码如下:

演示一:动态的时钟(来个复杂的)

要求

版本信息

>>> function a(){function b(){return “aaa”} Function.prototype.c=function(){return b();}}    
>>> a()    
>>> a.c    
function()    
>>> a.c()    
“aaa”   
>>> a.hasOwnProperty(“c”)    
false 

11:55:13
演示二:显示完整的一些方法(事实上我很讨厌有些格式了)

条件(三目)运算符 (?:)

根据条件执行两个语句中的其中一个。

test ?语句1 :语句2

看这段代码,首先声明一个函数a,内部又定义了一个函数b,但是函数b不是函数对象a的方法,只是函数a块当中的临时变量函数(或者说私有函数,不知道怎么描述好),后面又定义了一个函数c是用function(){}在a内部定义的,所以会产生closure所以c可以遍历到a下面所有块内部变量,当然包括b,我又把c挂到了Function.prototype下面,就是不是直接挂a下,而是挂到a的原形链上,最后还是执行出来了,并且hasOwnProperty也是假,更有 

Mon Oct 1 22:35:25 UTC+0800 2007
从1970-01-01到现在共过了1191249325859毫秒
返回当前的年份2007
2007
返回当前月91因为月是0-11,所以要加1
返回当前日期1
返回当前星期1
返回当前小时22
返回当前分钟35
返回当前的秒25
Wed Aug 16 11:55:03 UTC+0800 2006
从1970-01-01到现在共过了1155700503156毫秒
返回当前的年份2006
2006
返回当前月71因为月是0-11,所以要加1
返回当前日期16
返回当前星期3
返回当前小时11
返回当前分钟55
返回当前的秒3

参数

test

任何 Boolean 表达式。

语句1

testtrue 时执行的语句。可以是复合语句。

语句2

testfalse 时执行的语句。可以是复合语句。

代码

演示三: 倒计时

说明

?: 运算符是 if…else
语句的快捷方式。它通常被用作较大表达式的一部分,而在此处使用
if…else 语句是不协调的。例如:

var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");

在该例子中,如果是 6pm 以后,则创建一个包含 “Good evening.”
的字符串。使用 if…else 语句的等效代码如下:

var now = new Date();
var greeting = "Good";
if (now.getHours() > 17)
   greeting += " evening.";
else
   greeting += " day.";

复制代码 代码如下:

距2006年新年还有90天01小时24分34秒! 距2006年新年还有136天12小时04分56秒! 

要求

版本 1

>>> d={};    
Object    
>>> function a(){function b(){return “aaa”} d.c=function(){return b();}}    
>>> a()    
>>> d.c()    
“aaa”   

<%@LANGUAGE=”JAVASCRIPT” CODEPAGE=”936″%>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “;
<html xmlns=”;
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />
<title>js核心对象之Date</title>
<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)//把分给checkTime处理
s=checkTime(s)//把秒给checkTime处理
document.getElementById(‘txt’).innerHTML=h+”:”+m+”:”+s//在层txt中显示
t=setTimeout(‘startTime()’,500)//关键的一句,美隔500毫秒运行一次本函数
}

请参阅

if…else 语句 | 运算符优先级 | 运算符总结

closure和函数执行的context一点关系没有,context可以用call apply方法改变this,可是closure在function定义后好似没有办法再修改了,不知道是不是这样

function checkTime(i)
{//这函数意思很简单了,就是要实现01-09的效果
if (i<10) //
  {i=”0″ + i}
  return i
}
</script>
</head>

delete 运算符

从对象中删除一个属性,或从数组中删除一个元素。

delete expression

expression 参数是一个有效的 JScript
表达式,通常是一个属性名或数组元素。

<body onload=”startTime()”>
<p>时间对象作为非常重要的一个对象,对我们学.net的人来说,并不是很重要,但这并不意味着我们可以忽略,事实上,用得着的时候还是很多的,如果完全依赖JS处理时间,那是会出问题的,因为JS总是假设本地机器上的时间是正确的。还有个原因,他总按照GTM市区来计量。我们只是返回当前date对象的副本,我们即便是修改,那也不会对对象本身有任何影响。</p>
<p><strong>演示一:动态的时钟</strong>(来个复杂的)</p>
<div id=”txt”></div>
<p><strong>演示二:显示完整的一些方法(事实上我很讨厌有些格式了)</strong></p>
<p>
  <script language=”javascript”>
var md=new Date()
document.write(md+”<br>”)
document.write(“从1970-01-01到现在共过了”+md.getTime()+”毫秒<br>”)
document.write(“返回当前的年份”+md.getYear()+”<br>”)
document.write(md.getFullYear()+”<br>”)
document.write(“返回当前月”+md.getMonth()+1+”因为月是0-11,所以要加1<br>”)
document.write(“返回当前日期”+md.getDate()+”<br>”)
document.write(“返回当前星期”+md.getDay()+”<br>”)
document.write(“返回当前小时”+md.getHours()+”<br>”)
document.write(“返回当前分钟”+md.getMinutes()+”<br>”)
document.write(“返回当前的秒”+md.getSeconds()+”<br>”)
  </script>
</p>
<p><strong>演示三: 倒计时</strong></p>
<p>
  <SCRIPT LANGUAGE=”JavaScript”>
  today = new Date();//申明一个时间对象
  intDate = today.getDate();//返回当前的天日期
  intHours = today.getHours();//返回当前小时
  intMinutes = today.getMinutes();//分钟
  intSeconds = today.getSeconds();//秒
  intMonth = today.getMonth()+1 ;//月加1
  intYear = today.getYear();//返回年
  //以下是为了得到0时0分0秒的差数
  hours = intHours;
  hours = (23 – hours);
  minutes = intMinutes;
  minutes = (59 – minutes);
  seconds = intSeconds;
  seconds = (59 – seconds);

说明

如果 expression 的结果是一个对象,且在 expression
中指定的属性存在,而该对象又不允许它被删除,则返回 false

在所有其他情况下,返回 true

if (intYear % 4 == 0 && intYear % 100 != 0 || intYear % 400 == 0)
//如果当前年除以4余数为0 同时 当前年初与100 余数不为0 或者 当前年除以400余数为0,那么本年为366天
{ if (intMonth == 1)  {month = “距2006年新年还有”; date = (366 – intDate);}
//以下与本句同意思:用余下的天数减去当前的日期号数例如下句,因为是二月,所以只由335天,减当前天的号数
  if (intMonth == 2)  {month = “距2006年新年还有”; date = (335 – intDate);}
}
else//否则为365天
{ if (intMonth == 1)  {month = “距2006年新年还有”; date = (365 – intDate);}
  if (intMonth == 2)  {month = “距2006年新年还有”; date = (334 – intDate);}
}

要求

版本 3

发表评论

电子邮件地址不会被公开。 必填项已用*标注