@panhonhang
2018-05-26T17:29:15.000000Z
字数 1300
阅读 462
引用类型的值(对象)是引用对象的一个实例。
在JS中,引用类型是一种数据结构,用于将数据和功能组织在一起。
引用类型有时也被称为对象定义,因为它们描述的是一类对象所拥有的属性和方法。
创建Object实例的的方式有两种。
第一种是使用new操作符后跟Object构造函数,如下:
var person = new Object(); //创建Object引用类型的一个新实例,并且把该实例保存在变量person中。
person.name = "CC";
person.age = 23;
第二种方法是使用对象字面量表达式,对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。
var person = {
name : "CC",
age : 23
};
在JS中,表达式上下文指的是该上下文期待一个值(表达式);赋值操作符表示后面是一个值;所以左花括号({)在这里表示一个表达式的开始。
同样的花括号,如果出现在语句上下文中,例如跟在if语句的后面,则表示一个语句块的开始。
注意:对象字面量表达式中,属性与值之间用冒号(:)连接;属性与属性之间用逗号(,)分割;最后一个属性之后不需要逗号。
通过对象字面量表达式定义对象时,实际上不会调用Object函数。
如果需要向函数传递大量可选参数,对那些必需值使用命名参数,使用对象字面量表达式封装多个可选参数。
通常,访问对象的属性时使用的都是点表示法;不过,在JS中也可以使用方括号表示法来访问对象的属性。
在使用方括号语法时,应该将要访问的属性以字符串的形式放在方括号中。
方括号语法的主要优点是可以通过变量来访问属性;如果属性中包含会导致语法错误的字符,或者属性名使用的是关键字或保留字,也可以使用方括号表示法。
理解函数的参数
JS中的参数在内部是用一个数组来表示的。函数接收到的始终是这个数组。
在函数体内能够通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。
arguments对象与数组类似,可以使用方括号语法访问它的每一个元素,但它并不是Array的实例。
arguments[0]访问第一个元素、arguments[1]访问第二个元素。。。以此类推。。。
也就是说,下面两个函数的功能完全一样。
function sayHi (name,message) {
alert("Hello " + arguments[0] + "," + arguments[1]);
};
等价于:
function sayHi (name, message) {
alert("Hello " + name + "," + message);
};
这个事实,说明了JS中函数的一个重要特点:命名的参数只是提供便利,不是必需的。
通过访问arguments对象的length属性,可以获知有多少参数传递给了函数。
arguments对象的length值是由传入的参数的个数决定的,不是由定义函数时的命名参数的个数决定的。
arguments对象可以和命名参数一起使用。
arguments对象的值永远与对应命名参数的值保持同步;它们的内存空间是独立的,但是它们的值会同步。
参数始终是按值传递的,不可能通过引用传递参数。