[关闭]
@panhonhang 2018-05-26T17:29:15.000000Z 字数 1300 阅读 448

引用类型之object类型


引用类型的值(对象)是引用对象的一个实例。

在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对象的值永远与对应命名参数的值保持同步;它们的内存空间是独立的,但是它们的值会同步。

参数始终是按值传递的,不可能通过引用传递参数。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注