Javascript高级程序设计复习——第五章引用类型 【原创】

5.1  Object类型

1:创建Object实例的两种方式

①new构造法

var obj1 = new Object();   注意大写!不传递参数时可以省略圆括号
obj1.hehe = "nmb";

②对象字面量表示法

var obj1 = {
     hehe : "nmb"            
};

在使用对象字面量语法的时候,属性名可以使用字符串(new方法会出现undefined string的提示)

var obj1 = {
    "hehe" : "nmb"
};

var obj1 = {
    hehe : "nmb"
};

//上面两句等价,均使用obj1.hehe进行引用;若是使用obj1."hehe"引用,无论哪种方式都无法成功;

var o ={}; 与 var o = new Object();等价 

2:方括号表示法来访问对象的属性——特点是属性名为变量或包含空格,为关键字时才使用方括号表示法

alert(obj["hehe"]);---方括号中的属性名需要以字符串的形式访问

3:所有对象都具有一些基本的属性和方法

比如:toString(),valueOf(),hasOwnProperty()..


5.2Array类型

1:创建数组的方式

//new构造法
var colors = new Array();

var colors = new Array(20);

var colors = new Array("red","blue");

//数组字面量表示法
var colors = ["red","blue"];

var names = []; 

2:检测数组

Array.isArray();

3:转换方法

Array.toString();返回由逗号分隔开的拼接字符串

Array.valueOf();返回的依旧是数组本身不变

alert(Array);由于alert()要接收字符串参数,所以会在后台调用toString()方法,与toString()方法相同

Array.join();方法可以使用不同的分隔符来构建这个字符串如:Array.join("||")-->red||blue

4:数组对象的各种方法

①push();pop();(返回长度)推入后面,后入先出——栈

②unshift();shift();推入前面,先入先出——队列

③reverse();sort();——重排序

④concat(传递一个或多个参数);slice(传递1-2个参数,新建一个从初始位置到结束位置之前一位的数组);splice(要删除的第一项,删除的项数,填充的项)——操作方法

⑤indexOf(),lastIndexOf()——位置方法(传递1-2个参数,搜索目标和起始位置)

⑥every(),filter(),forEach(),map(),some()——迭代方法

⑦reduce(),reduceRight()——归并方法


5.3 Date类型

1:创建Date类型(不传入参数则自动获取当前日期和时间)

var now = new Date();

2:Date方法

Date.parse();——接收一个表示日期的字符串参数,然后返回相应的日期毫秒数如

var someDate = new Date(Date.parse("May 25, 2004"));
或
var someDate = new Date("May 25,2004");

//如果无法识别则返回NAN,由于直接将字符串传递给Date会自动调用Date.parse()所以上面两式结果相同

var someDate = new Date();
//如果不传入参数则自动获得当前日期和时间

Date,UTC();——只有前两个参数年月是必填的

var someDate = new Date(Date.UTC(2005,4,5,17,55,55));

var someDate = new Date(2005,4,5,17,55,55);
//GMT事件2005年5月5日下午5:55:55

上面两种方法均返回表示日期的毫秒数

var datenow2 = Date.now();

var datenow2 = +new Date();

//上面均可以获得当前日期的毫秒数,通常可以用于计算

3.继承的方法

Date.toString()——返回带有时区信息的日期和时间

Date.valueOf()——返回日期的毫秒表示

由于关系运算符运算的是对象时,会自动调用对象的valuOf()后比较,所以可以方便的进行比较

var date1 = new Date(2007,0,1);
var date2 = new Date(2007,1,1);

alert(date1<date2); 
//true

4:Date对象还有很多用于设置和取得日期值中特定部分的方法P102

比如:Date.getTime();——返回表示日期的毫秒数,与ValueOf()返回值相同;


5.4 RegExp正则


5.5 Function类型

1:创建函数

①函数声明(函数提升,但是无法直接跟圆括号调用)

function sum(s1,s2){

  return s1+s2;

}

②函数表达式

var sum = function(s1,s2){
  
   return num1+num2;

};

【注】:不带括号的函数名是访问函数指针,而非调用函数;函数表达式有分号结尾,函数声明则没有!

2:函数内部属性

①有两个特殊的对象:arguments和this

I.arguments.callee == 该参数所属的函数名

function sum(s1,s2){


  return arguments.callee;

     //此时的arguments.callee == sum
}

II.caller属性保存着调用当前函数的函数的引用

function outer(){
    inner();
}

function inner(){
    alert(inner.caller);
}

outer();

//此处对outer()的调用会显示outer函数的源代码

3:函数属性和方法

①length属性表示希望接收的命名参数的个数;

②prototype属性——toString(),valueOf();

③每个函数都包含两个非继承而来的方法call和apply——传递参数,扩充作用域

④bind方法——创建一个函数实例,其this会被绑定到传给bind()函数的值

   例子如下

window.color = "red";
var  o = {color: "blue"};

function sayColor(){
    alert(this.color);     
}

var objectSayColor = sayColor.bind(o);
objectSayColor(); 
//blue

 ⑤函数继承的toString(),valueOf()方法均返回函数代码


 5.6基本包装类型——Boolean/Number/String

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

var s1 = "some text";

s1.color = "red";

alert(s1.color);

//undefined

2:Boolean对象没什么用,建议永远不要使用。

3:Number类型

①toString(x)——x表示转化成几进制的字符串形式

②toFixed(x)——x表示按照指定的小数位返回数值的字符串表示

③toExponential(x)——使用科学记数法记数,x表示输出结果中的小数位数

4:String类型

①length——返回字符串字符数(包括空格)

②charAt(x)——返回x处的字符

var str = "hello world";
alert(str.charAt(1));
//e

③ECMASCRIPT定义了另一个访问个别字符的方法[]

var str = "hello world";
alert(str[1]);
//e

④concat()——类似数组的相同方法,但是返回的不是数组而是拼接后的字符串(一般情况下使用+代替

⑤slice(),substr(),substring()——均是对字符串进行处理后返回处理结果(互相可以替换,效果差不多)

⑥indexOf(),lastIndexOf()——类似数组的方法,接收两个参数,查询值和从哪里开始查询

⑦trim(),trimLeft(),trimRight()——删除前置后置的空格/删除前置空格/删除后置空格

⑧toLowerCase(),toUpperCase()——小写大写转换

⑨字符串的模式匹配方法——与RegXep到时候一起总结

split(x指定分隔符,y指定返回数组大小)——模式匹配很好用的方法


5.7 单体内置对象

1.Global对象

①eval()方法

接受一个参数,即要执行的ECMAScript字符串;

eval("alert('hi')");

在执行了字符串后,会将执行结果插入到原位置,与eval()处于相同的作用域链中

var mes = "hello world";
eval("alert(mes)");
//hello world

②Web浏览器将Global这个全局对象作为window对象的一部分来实现,因此在全局作用域中声明的所有变量和函数,都成了window对象的属性

var color = "red";
function sayColor(){
    alert(window.color);    
}
window.sayColor();
//red

2.Math对象

①属性

Math.E,Math.PI………………

②Math.max(1,2,3,4);Math.min(1,2,3,4);

要取得数组中的最小值可以用apply方法

var val = [1,2,3,4,5,6,7,8];
var max = Math.max.apply(Math,values);  //虽然书上的方法是这里
var max = Math.max.apply(this,values);  //但是经测试这种写法也是OK

③Math.ceil()——向上舍入,Math.round()——向下舍入,Math.floor()——标准舍入(四舍五入),Math.random()

原文地址:https://www.cnblogs.com/cndotabestdota/p/5707459.html