javascript高级程序设计笔记(四)

1、var now=new Date()
新创建的对象自动获取当前日期和时间。如果要根据特定的日期和时间创建日期对象,必须传入表示该日期的毫秒数(即从UTC时间 1970年1月1日午夜至该日期止所经过的毫秒数。) 注意是毫秒数!!!
Date.parse()---接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数。
年/月/日 小时:分:秒  0000/00/00 00:00:00
英文月 日,年 小时:分:秒 美国月 00,0000 00:00:00

var someDate=new Date(Date.parse("May 25,2004"));
等价于 var somDate=new Date("May 25,2004");

Date.UTC()--返回表示日期的毫秒数,参数是0000,00,00,00,00,00,00 从0开始算
var allfives=new Date(Date.UTC(2005,4,5,17,55,55))

2、
toDateString()- 以特定于实现的格式显示星期几、月、日和年
toTimeString()-以特定于实现的格式显示时、分、秒和时区
getTime()-返回毫秒数
setTime()-以毫秒数设置日期
getFullYear/getUTCFullYear/setFullYear 等等

嘿嘿,依据这个可以做个简单的倒计时。
看HTML
<div class="deadline" nowtime="undefined" endtime="2012/4/20 0:00:00">离试用申请结束还有:
    <span class="day"></span>天<span class="hour"></span>小时<span class="minute"></span>分<spanclass="second"></span>秒
 </div>
看js
var cd;
var cut = 0;
var now = new Date();
function countdown() {
    cut++;
    $(".deadline").each(function () {
        var endTime = Date.parse($(this).attr("endtime"));//设置到期时间毫秒数
        var nowtime = now.getTime();
        var remain = parseInt((endTime - nowtime) / 1000) - cut;//判断剩下的秒数
        var day = parseInt(remain / 3600 / 24);//计算剩下多少天
        var hour = parseInt((remain / 3600) % 24);
        var minute = parseInt((remain / 60) % 60);
        var second = parseInt(remain % 60);
        if (hour < 10) hour = "0" + hour;
        if (minute < 10) minute = "0" + minute;
        if (second < 10) second = "0" + second;
        $(this).find(".day").html(day);
        $(this).find(".hour").html(hour);
        $(this).find(".minute").html(minute);
        $(this).find(".second").html(second);
        if (remain <= 0) {
            $(this).html("试用申请结束已结束");
        }
    });
}
cd = setInterval(countdown, 1000);//每隔1秒刷新下

3、每当读取一个基本类型值的时候,后台会创建一个对应的基本包装类型对象,从而可以调用一些方法来操作数据。

var s1="some test";
var s2=s1.Substring(2);
后台自动完成一些列处理:1、创建String类型的实例 2、在实例上调用方法 3、销毁实例
引用类型和基本包装类型的主要区别在于对象的生存期。
用new创建的引用类型实例,在执行流离开当前作用于之前都在内存中。自动创建的基本包装类型对象,只存在于一行代码的执行瞬间,然后被销毁。这我们不能再运行时未基本类型值添加属性和方法。

4、Boolean基本包装类型对象。 记住:布尔表达式中所有对象都会被转换为true!!!

var falseObject = { name: "nike" };
var falseObject2 = { name: "nike2" };
var result = falseObject && falseObject2;
alert(result.name);//nike2

var falseObject3 = new Boolean(false);
var result2 = falseObject3 && true;
alert(result2); //true

var falseObject4 = false;
var result3 = falseObject4 && true;
alert( result3)//fasle

5、indexOf() 和lastIndexOf()--从一个字符串中搜索给定的子字符串,然后返回子字符串的位置,如果没有找到该子字符串,则返回-1。
包含指定的字符。

var stringvalue = "hoeollo world";
document.write("第一次出现o的位置:" + stringvalue.indexOf("o") + "<br />"
+ "最后一次出现o的位置" + stringvalue.lastIndexOf("o")+"<br />"
+ "前6个字符中即" + stringvalue.slice(0, 5) + "中,最后一次出现o的位置" + stringvalue.lastIndexOf("o", 5) + "<br />"
+ "从第6个字符开始" + stringvalue.slice(5) + "中,第一次出现o的位置" + stringvalue.indexOf("o", 5)
);


6、URI[Uniform Resource Identifiers 通用资源标识符]编码方法
encodeURI()主要用于整个URI 而 encodeURIComponent()主要用于对URI中的某一段进行编码。
区别:encodeURI()不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和#字号;
而encodeURIComponent()则会对它发现的任何非标准字符进行编码。
decodeURI、decodeURIComponent

Math.max() Match.min()
Math.ceil()向上舍入,Match.floor()向下舍入,Math.round()执行标准舍入。
7、正则表达式
对于入门正则表达式来说,下面这篇文章是不错的。
http://www.regexlab.com/zh/regref.htm

exec()的参数是要应用模式的字符串,然后返回包含第一个匹配项信息的数组,或者在没有匹配想的情况下返回null.
返回数组有两个额外属性:index 和 input。其中index表示匹配项在字符串中的位置,而input表示应用正则表达式的字符串。
对于exec()而言,即使在模式中设置了全局标志(g),它每次也只会返回一个匹配项。
在不设置全局标志的情况下,在同一个字符串上多次调用exec()将始终返回第一个匹配项的信息,而在设置全局标志的情况下,每次调用exec()则都会在字符串中继续查找新匹配项。
注意:IE的JavaScript实现在lastIndex属性上存在偏差,即使在非全局模式下,lastIndex属性每次也会改变。

var text = "cat, bat, sat, fat";
var pattern1 = /.at/;
var matches = pattern1.exec(text);
alert(matches.index);//0
alert(matches[0]);//cat
alert(pattern1.lastIndex);//0

matches = pattern1.exec(text);
alert(matches.index);//0
alert(matches[0]);//cat
alert(pattern1.lastIndex);//0

--------------------------------------------
var text = "cat, bat, sat, fat";
var pattern1 = /.at/g;
var matches = pattern1.exec(text);
alert(matches.index);//0
alert(matches[0]);//cat
alert(pattern1.lastIndex);//3

matches = pattern1.exec(text);
alert(matches.index);//5
alert(matches[0]);//bat
alert(pattern1.lastIndex);//8


正则表达式第二个方法是test(),参数是字符串。在模式与该参数匹配的情况下返回true。

var text = "000-00-0000";
        var pattern = /\d{3}-\d{2}-\d{4}/;
        if (pattern.test(text))
            alert("The pattern was matched");

8、String类型
访问字符串中特定字符:charAt()、charCodeAt() 这两个方法都接收一个参数,即基于0的字符位置。
var stringvalue = "hello world";
alert(stringvalue.charAt(1)); //e
alert(stringvalue.charCodeAt(1)); //101

concat() 用于将一个或多个字符串拼接起来,返回拼接得到的新字符串。

var stringValue = "hello ";
var result = stringValue.concat("world");
alert(result);//"hello world"
alert(stringValue);//hello


match()--返回一个数组,只接受一个参数,一个正则表达式或是RegExp。返回的具体数组内容与模式相关。
下面例子对比下exec.

var someText = "web2.0 12 .net2.0";
var pattern = /(\w+)(\d)\.(\d)/g;
outCome_exec = pattern.exec(someText);
outCome_matc = someText.match(pattern);
alert( outCome_exec+"--"+outCome_matc);//web2.0,web,2,0--web2.0,net2.0

var text = "cat1, bat2, sat3, fat";
var pattern2 = /(.at)\d/;
var pattern3 = /(.at)\d/g;
var matches = text.match(pattern2);
var matches2 = text.match(pattern3);
alert(matches); //cat1,cat
alert(matches2); //cat1,bat2,sat3

search()--参数与match相同,返回字符串中第一个个匹配项的索引,如果没有找到匹配项,返回-1。

var text = "cat,bat,sat,fat";
var pos=text.search(/at/);
alert(pos);//1


replace()--可以接受两个参数:一个是RegExp对象或者是一个字符串(字符串不会被转换成正则表达式);第二个参数可以是一个字符串或者是一个函数。
如果是字符串,只会替换第一个子字符串。用正则,指定全局g。

var text = "cat,bat,sat,fat";
var result = text.replace("at", "ond");
alert(result);//cond,bat,sat,fat
result = text.replace(/.at/g, "ond");
alert(result);//cond,bond,sond,fond


function test() {
    for (var i = 0; i < arguments.length; i++) {16:06 2012/3/31
        document.write("第" + (i + 1) + "个参数的值:" + arguments[i]+"<br />");
    }
}
var reg = new RegExp("\\d", "g");
var str = "abd1afa4sdf";
str.replace(reg, test); 



var text = "cat23,bat2,sat5,fat67";
var result = text.replace(/(.at)(\d+)/g, "word($1$2)");
document.write(result); //word(cat23),word(bat2),word(sat5),word(fat67)

参数是函数,在只有一个匹配项(即与模式匹配的字符串)的情况下,传递三个参数:模式的匹配项,模式匹配项在字符中的位置和原始字符串。


function htmlEscape(text) {
    return text.replace(/[<>"&]/g, function (match, pos, originalText) {
        document.write(match+"<br />");
        switch (match) {
            case "<": return "&lt;";
            case ">": return "&gt;";
            case "&": return "&amp;";
            case "\"": return "&quot;";
        }
    });
}
alert(htmlEscape("<p class=\"greeting\">Hello world!</p>"));



split()---基于制定的分隔符将一个字符串分隔成多个字字符串,并将结果放在一个数组中。分隔符可以是字符串,也可以是RegExp对象。第二个参数,用于指定数组的大小。

var colorText = "red,blue,green,yellow";
var colors1 = colorText.split(",");
var colors2 = colorText.split(",", 2);
document.write(colors1 + "--" + colors2); //red,blue,green,yellow--red,blue

localeCompare(),比较字符串返回(负数,0,正数)具体返回数值,依据浏览器定

var stringvalue = "yellow";
alert( stringvalue.localeCompare("brick"));

fromCharCode()---接收字符编码,将他们转换成一个字符串。这个有时候用来进行跨浏览器注入攻击。

alert(String.fromCharCode(104,101,108,108,111));//hello
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值