JavaScript高程学习笔记(五)

Object类型
  var person=new Object();
person.name="Nicholas";
person.age=29;
对象字面量表示法
var person={
 name:"Nicholas",
 age:29
};

var person={
 name:"Nicholas",
 age:29
5:true
};
这里的5会自动的转化为字符串
var person={}//与new Object()相同
person.name="Nicholas";
person.age=29;

以下访问方法都可以。
alert(person["name"]);//"Nicholas"
alert(person.name);//"Nicholas"
var propertyName="name";
alert(person[propertyName]);//"Nicholas";

Array类型
array的每一项都可以保存任何类型的数据
创建数组
var colors=new Array();
法二:
var colors=new Array(20);//创建length为20的数组
字面量表示法
var colors=["red","blue","green"];//创建一个包含3个字符串的数组
var names=[ ];//创建一个空数组。
var colors=["red","blue","green"];//定义一个字符串数组
alert(colos[0]);//显示第一项
colors[2]="black";//修改第二项
colors[3]="bown";//新增第四项

可以通过数组的length属性从数组的末尾移除或项中添加新项
var colors=["red","bkue","green"];
colors.length=2;
alert(colors[2]);//undefined
 若将length属性设置为大于数组项数的值,则新增的每一项都会取得undefined的值
var colors=["red","blue","green"];//创建一个包含3个字符串的数组
colors.length=4;
alert(colors[3]);//undefined
利用length属性也可以方便的在数组末尾添加新项
var colors=["red","blue","green"]//创建一个包含3个字符串的数组
colors[colors.length]="black";//在位置3添加一种颜色
colors[colors.length]="brown";//在位置四再添加一种颜色

数组的长度值为最后一项加一

var colors=["red","blue","green"];//创建一个包含3个字符串的数组
colors[99]="black";//在(位置99)添加一种颜色
alert(colors.length);//100
位置3到位置98实际上都是不存在的,访问他们都将返回undefined

检测数组
Array.isArray()方法
此方法的目的是最终确定某个值到底是不是数组,而不管它是在那个全局执行环境
中创建的
if(Array.isArray(Value)){
//对数组执行某些操作
}

转换方法
每一个对象都具有toLocaleString(),toString()和valueOf()方法。
调用toString()方法会返回有数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串
而valueOf()方法返回的还是数组。

如果使用join()方法,则可以使用不同的分隔符来构建这个字符串。
join()方法只接受一个参数,即用作分隔符的字符串。
var colors=["red","green","blue"];
alert[colors.join(",")];//red,green,blue
alert[colors.join("||")];//red||green||blue
在这里,使用join()方法重现了toString()方法的输出。

栈方法(先入后出)
push()方法可以接受任意数量的参数,把他们逐个添加到数组的末尾,并且返回修改后数组的长度。
pop()方法则从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。
var colors=new Array();//创建一个数组
var count=colors.push("red","green");//推入两项
alert(count);//2
count=color.push("black");//推入另一项
alert(count);//3
var item=colors.pop();//取得最后一项
alert(item);//"black"
alert(colors.item);//2

队列方法(先进先出)
shift()方法,能够移除数组中的第一个项并返回该项,同时数组的长度减一
var colors=new Array();//创建一个数组
var count=colors.push("red","green");//推入两项
alert(count);//2
count=color.push("black");//推入另一项
alert(count);//3
var item=colors.shift();//取得第一项
alert(item);//"red"
alert(colors.item);//2

unshift()方法,在数组的前段添加项,从数组的末端移除项;
var colors=new Array();//创建一个数组
var count=colors.push("red","green");//推入两项
alert(count);//2
count=color.unshift("black");//推入另一项
alert(count);//3
var item=colors.pop();//取得最后一项
alert(item);//"green"
alert(colors.item);//2

重排序方法
reverse()和sort()方法
reverse()方法会对反转数组项的顺序
var value={1,2,3,4,5};
values.reverse();
alert(values);//5,4,3,2,1


操作方法
cancat()方法可以基于当前数组中所有项创建一个新数组
例如
var colors=["red","green","blue"];
var colors2=colors.concat("yellow",["black","brown"]);
alert(colors);//red,green,blue
alert(colors2);//red,green,blue, yellow,black,brown

slice()方法可以接受一个或两个参数,即要返回项的其实和结束位置。在只有一个参数的情况下
slice()方法返回从该型到当前数组末尾的所有项,两个参数,返回其实和结束之间的项。

var colors=["red","green","blue","yellow","purple"];
var colors2=color.slice(1);
var color3=colors.slice(1,4);
alert(colors2);//green,blue,yellow,purple
alert(colors3);//green ,blue,yellow

splice()方法
1.删除;可以删除任意数量的项,只需指定两个参数,要删除的第一个项位置和要删除的项数
2.插入:可以向指定位置插入任意数量的项,提供3个参数,起始位置,要删除的项数,要插入的项
3.替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定三个参数:起始位置,要删除的项数和要插入的任意数量的项。
插入项数不必与删除的项数相同
var colors={"red","green","blue"];
var removed=color.splice(0,1);//删除第一项
alert(colors);//green,blue
alert(removed);//red返回的数组中只包含一项
 removed=colors.splice(1,0,"yellow","orange")//从位置1开始插入
alert(colors);//green,yellow,orange,blue
alert(removed);//返回的是一个空数组
removed=color.splice(1,1,"red","pueple")//插入两项 删除一项
alert(colors);//green.red.purple,orange,blue
alert(removed)    //yellow

位置方法
  indexOf()与lastindexof()
indexOf()方法从头(位置0)开始找,
lastindexof()方法从数组的末尾开始向前查找
这两个方法都接受连个参数:要查找的项和(可选的)表示查找起点位置的索引。
在没有找到的情况下返回负一

var number={1,2,3,4,5,4,3,2,1};
alert(numbers.indexOf(4));//3
alert(number.lastindexOf(4));//5

迭代方法

缩小方法

Date类型
var now=new Date();//新创建的对象将自动获得当前日期和时间(再不传递参数的情况下)
var someDate=new Date(Date.parse("May 25, 2005"));//设置2005年5月25日
Date.UTC()方法参数分别是年份,基于0的月份(一月是0,二月是1,以此类推)
var y2k=new Date(Date.UTC(2000,0));//2000年1月1日午夜零时。
var allFives=new Date(Date.UTC(2005,4,5,17,55,55));//2005年5月5日下午5:55:55.

Date构造函数也会模仿Date.UTC(),但date的日期和时间都基于本地时区而非GMT来创建。
var y2k=new Date(2000,0)年1月1日午夜零时。
var allFives=new Date(2005,4,5,17,55,55);//2005年5月5日下午5:55:55.
//取得开始时间
var start=Date.now();
//调用函数
doSomething();
//取得停止时间
var stop=Date.now().
 result=stop-start;

RegEXP类型
语法
var expression=/pattern/flags;
g:表示全局模式,即模式将被应用于所有的字符串,而非
在发现第一个匹配时立即停止;
i:表示不区分大小写
m:表示多行模式
var pattern1=/at/g;
//匹配字符串中所有“at”的实例
var pattern2=/[bc]at/i;
//匹配第一个“bat”或“cat”,不区分大小写
var pattern3=/.at/gi;
//匹配所有以“at”结尾的3个字符的组合,不区分大小写

模式中使用的所有元字符都必须转义。正则表达式中的元字符包括
({[\^$|?*+.]})
var pattern2=/\[bc\]at/i;
//匹配第一个“[bc]at”,不区分大小写,对两个方括号进行转义
var pattern3=/\.at/gi;
//匹配所有以“.at”结尾的3个字符的组合,不区分大小写

var pattern4=new RegExp{*[bc]at*,*i*};
//与pattern2相同,只不过是使用构造函数创建的。

RegExp实例属性
global:布尔值,表示是否设置了g标志。
ignoreCase:布尔值,表示是否设置了i标志。
lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起。
multiline:布尔值,表示是否设置了m标志。
source:正则表达式的字符串形式,按照字面量形式返回。

RegExp实例方法
exec()接收一个参数;即要应用模式的字符串,然后返回包含第一个匹配项信息的
数组,index和input属性,其中index表示匹配项在字符串中的位置。
而input表示应用正则表达式的字符串。
var text="mom and dad and baby";
var pattern=/mom(and dad(and baby)?)?/gi;
var matches=pattern.exec(text);
alert(matches.index);//0
alert(matches.input);//"mom and dad and baby"
alert(matches[0]);//"mom and dad and baby"
alert(matches[1]);//"and dad and baby"
alert(matches[2]);//"and baby"
对于exec()方法而言,即使在模式中设置了全局标志(g),它每次也只会返回一个匹配项
在不设置全局标志的情况下,在同一个字符串上多次调用exec()将始终返回第一个匹配项的信息
而在设置全局标志的情况下,每次调用exec()则都会在字符串中继续查找新匹配项。

test()方法,它接受一个字符串参数。在模式与该参数匹配的情况下返回true;否则返回false;
例:
 var text="000--00--0000";
var patten=/\d(3)-\d(2)-\d(4)/;
if(patten.test(text)){
alert("123");
}

RegExp实例继承的toLocaleString()和toString()方法都会返回正则表达式的字面量,
var pattarn=new RegExp("\\[bc\\]at","gi");
alert(pattern.toString()); // /\[bc\]at/gi

RegExp构造函数属性
var text="this has been a short summer";
var pattern=/(.)hort/g;
if(pattern.test(text)){
 alert(RegExp.input);//this has been a short summer;
 alert(RegExp.leftContext);//this has been a
 alert(RegExp.rightContext);//summer
 alert(RegExp.lastMatch);//short
alert(RegExp.lastParen);//s
alert(RegExp.multiline);//false
}

Function类型
 function sum(num1,num2){
 return num1+num2;
}
与 
var sum=function(num1,num2){
return num1+num2;
}
相同。
函数实际上是对象。每个函数名实际上也是一个指向函数对象的指针;

函数声明与表达式
在代码开始执行之前,解析器就已经通过一个名为函数声明提升的过程,
读取并将函数声明添加到执行环境中。
alert(sum(10,10))
function sum(num1,num2){
 return num1+num2;
}

alert(sum(10,10));
var sum=function(num1,num2){
 return num1+num2;
}
运行会产生错误,原因在于函数位于第一个初始化语句中,而不是一个函数声明。

作为值的函数
函数可以作为值来使用
例:
function add10(num)(
 return num+10;
}
var result1=callSomeFunction(add10,10);
alert(result1);//20
注:
要访问函数的指针而不执行函数的话,必须去掉函数名后的那对圆括号;

函数的内部属性
aruguments
即解除函数内部的一种亲密耦合现象;
例:
function factorial(num){
 if(num<=1){
 return 1;
}else{
 return num*arguments.callee(num-1)//没有在引用函数名factorial.这样无论引用函数是使用是什么名字,都可以保证完成正常递归调用
}
}

var trueFactorial=factorial;
factorial=function(){
 return 0;
};
alert(trueFactorial(5));//120
alert(factorial(5));//0

this
this引用的就是函数据以执行的环境对象;

window.color="red";
var o=(color: "blue");

function sayColor(){
 alert(this.color);
}
sayColor();//*red*,在全局作用域中调用
o.sayColor=sayColor;
o.sayColor();//"blue",在局部作用域中调用

函数属性和方法;
length:表示函数希望接收的命名参数的个数,
function sayName(num1){
alert(name);
}
function sayHi(){
alert("hi");
}
alert(sayName.length);//1
alert(sayHi.length);//2

prototype属性
apply()方法:
接受两个参数:一个是在其中运行的作用域,另一个是参数数组;
第二个参数可以是Array的实例,也可以是arguments对象。
call()方法,与apply()方法的区别是传递给函数的参数都必须逐个列举出来。
例:
function sum(num1,num2){
 return num1+num2;
}
function callSum(num1,num2){
 return sum.call(this,num1,num2);
}
alert(callsum(10,10));//20
apply()与call()扩充函数的作用域
window.color="red";
var o=(color:"blue");
function sayColor(){
alert(this.color);
}
sayColor();//red
sayColor.call(o);//blue
bind().
创建一个函数的实例,其this值会被绑定到传给bind()
函数的值
window.color="red";
var o=(color:"blue");
function sayColor(){
alert(this.color);
}
var objectSayColor=sayColor.bind(o);
objectSayColor();//blue

基本包装类型
引用类型与基本包装类型的主要区别就是对象的生存期。
自动创建的基本包装类型只存在与一行代码的执行瞬间,然后立即被销毁。

Boolean类型
var booleanObject=new Boolean(false);
var result=falseObject&&true;//boolean中所有对象都会被转化为true;
alert(result);//true;
var falseValue=false;
result=falseValue&&true;
alert(result);//false

Number类型
var num=99;
alert(num.toPreoision(1));//"1e+2";
alert(num.toPreoision(2));//99;
alert(num.toPreoision(3));//99.0;
alert(num.toFixed(2));//"10.01;

String类型
length属性
var StringValue=“hello world”;
alert(StringValue.length);//11
charAt()方法以单字符串的形式返回给定位置的字符
例如
var  StringValue=“hello world”;
alert(stringValue.charAt(1));//"e"
charCodeAt()返回给定字符编码
var stringValue="hello world";
alert(atringValue.charCodeAt(1));//输出“101”

字符串操作方法
concat();用于将一个或多个字符串拼接起来,返回新的字符串。
var stringValue="hello";
var result=stringValue.concat("World");
alert(result);//"hello world"
slice(),substr(),substring()第一个参数表示字符串的开始位置,
slice(),substr()第二个参数表示字符串到那里结束,substr()第二个参数指定的则是返回的字符个数
当传递给这些参数是负值时,slice()方法会将传入的负值与字符串的长度相加,substring()方法会把所有的
负值参数转化为0;

字符串位置方法
indexOf()从头向后;
lastIndexOf()从后向前搜索;

trim()方法,创建一个字符串的副本,删除前置及后缀的所有空格;

var stringValue=“  hello world   ”;
var trimmedStringValue=stringValue.trim();
alert(trimmedStringValue);//"hello world"

字符串大小写转换
toLowerCase():转换为小写
toUpperCase():转换为大写

字符串的模式匹配方法
match()只接受一个参数;正则表达式或者RegExp对象
var text="cat,bat,sat,fat";
var pattern="/.at/;
//与pattern.exec(text)相同
var matches=text.match(pattern);
alert(matches[0]);//"cat"

search().
var text="cat,bat,sat,fat";
var pos=text.search(/at/);
alert(pos);//1
即“at”在字符串中第一次出现的位置。


localeCompare()方法
比较字符串在字母表中的位置,前为负,等为0,后为正
var stringValue="yellow";
alert(stringValue.localeCompare("brick"));//1
alert(stringValue.localeCompare("yellow"));//0
alert(stringValue.localeCompare("zoo"));//-1

fromCharCode()方法
接受1或多个字符编码,并将其转换为一个字符串。
alert(String.fromcharCode(104,101,108,108,111));//"hellow"


URL编码方法
encodeURI()主要用于整个URL,而encodeURIcomponent()主要用于对URL中的某一段进行编码
encodeURI()不会对本身属于URL的特殊字符进行编码,例如冒号、正斜杠;
encodeURIComeponent()则会对于它发现的任何非标准字符进行编码。
var uri="http://www.wrox.com/illegal value.htm#start";
//"http://www.wrox.com/illegal%20value.html#start"
alert(encodeURI(uri));
//"http%A%2F%2Fwww.wrox.com%2Fillegal%20value.html%23start"
alert(encodeURIComponent(uri));
encodeURI()对应decodeURI();//decodeURI()解码
encodeURICompanent()对应decodeURIComponent()。//decodeURIComponent()进行解码。


eval()方法
var msg="hello world";
eval("alert(msg)");//"hello world"

window对象
在全局作用域中声明的所有变量和函数,就都成了window对象的属性
var color="red";
function sayColor(){
 alert(window.color);
}
window.sayColor();"red"


Math对象
max()与min()方法
var max=Math.max(3,54,32,16);
alert(max);//54
var min=Math.min(3,54,32,16);
alert(min);//3


舍入方法
Math.ceil()//向上舍入
Math.floor()//向下舍入
Math.round()//标准舍入
alert(Math.ceil(25.9));//26
alert(Math.round(25.9));//26
alert(Math.floor(25.9));//25


random()方法
返回一个0~1的随机数
var num=Math.floor(Math.floor(Math.random()*10+1));//选择一个1到10间的数;第一个是1.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值