【javascript 引用类型(一)】

javascript 的引用类型大致分为:Object 类型、Array 类型、Date 类型、RegExp 类型、Function
类型、基本包装类型和单体内置对象。这里我们着重介绍 Object 类型、Array 类型和 RegExp 类型。

【Object 类型】

创建 Object 实例的方式有两种,一种是使用 new 操作符后跟 Object 构造函数,代码如下:


var person = new Object();
person.name = ‘Nicholas‘;
person.age = 19;

另外一种是使用对象字面量表示法,代码如下:


var person = {
name:‘Nicholas‘, //注意:这里是逗号,而不是分号
age:29
}; //注意:结尾处的分号不要丢失

在使用对象字面量法时,属性名也可以使用字符串,例如以下代码:


var person = {
‘name‘:‘Nicholas‘, //注意:这里是逗号,而不是分号
‘age‘:29
}; //注意:结尾处的分号不要丢失

另外,使用对象字面量语法时,如果留空其花括号,则可以定义只包含默认属性和方法的对象,例如以下代码:


var person = {};  //与 new Object()相同
person.name = ‘Nicholas‘;
person.age = 29;

大多数的开发人员更加青睐于对象字面量的语法,因为这种语法要求的代码量少,而且能够给人封装数据的感觉。实际上,对象字面量也是向函数传递大量可选参数的首选方式,例如:


function disInfo(args){
var msg = ‘‘;
if(typeof args.name == ‘string‘){
msg += (‘name:‘ + args.name + ‘ ‘);
}
if(typeof args.age == ‘number‘){
msg += (‘age:‘ + args.age);
}
console.log(msg);
}
disInfo({
name:‘name1‘,
age:12
});
disInfo({
name:‘name2‘,
});
disInfo({
age:13
});
disInfo({
});

在这里例子中,函数 displayInfo() 接受一个名为 args 的参数。这个参数可能带有一个名为 name 或 age
的属性,也可能这两个属性都有或者都没有。在这个函数的内部,我们通过 typeof
操作符来检测每个属性是否存在,然后再基于相应的属性来构建一条要显示的消息。然后我们调用了四次这个函数,虽然每次调用传递的参数不同,但是都能够正常执行。

在 javascript 中除了使用点表示法来访问对象属性之外,还可以使用方括号表示法来访问对象属性。在使用方括号语法时,应该将要访问的属性以字符串的形式方在方括号中,例如以下代码:


var person = {
‘name‘:‘Nicholas‘, //注意:这里是逗号,而不是分号
‘age‘:29
}; //注意:结尾处的分号不要丢失
console.log(person[‘name‘]); //Nicholas
console.log(person.name); //Nicholas

从功能上看,这两种访问对象属性的方法没有任何区别,但是方括号语法的主要优点是可以通过变量访问属性,例如:


var person = {
‘name‘:‘Nicholas‘, //注意:这里是逗号,而不是分号
‘age‘:29
}; //注意:结尾处的分号不要丢失
var newPro = ‘name‘;
console.log(person[newPro]); //Nicholas
console.log(person.newPro); //undefined

如果属性名中包含导致语法错误的字符,或者属性名使用的是关键字或保留字,也可以使用方括号表示法,例如:


var person = {
‘first name‘:‘Nicholas‘, //注意:这里是逗号,而不是分号
‘age‘:29
}; //注意:结尾处的分号不要丢失
console.log(person[‘first name‘]); //Nicholas

【Array 类型】

1.创建数组

创建数组的基本方式有两种,一种是使用 Array 构造函数,代码如下:


var arr = new Array();

在使用 Array 构造函数时也可以省略 new 操作符。例如:


var arr = Array();

创建数组的第二种方式是使用数组字面量表示法,例如:


var color = [‘red‘,‘blue‘,‘yellow‘];

2.读取和设置数组的值

在读取和设置数组的值时,要使用方括号并提供相应值的基于0的数字索引,例如以下代码:


var color = [‘red‘,‘blue‘,‘yellow‘];
console.log(color[0],color[1],color[2]); // red blue yellow
color[1] = ‘black‘;
console.log(color[0],color[1],color[2]); //red black yellow

3.数组的 length 属性

使用数组的 length 属性可以返回数组的长度,数组的 length 属性不是只读的,可以通过这个属性从数组的末尾移除项或者添加新项。例如:


var color = [‘red‘,‘blue‘,‘yellow‘];
console.log(color[0],color[1],color[2]); // red blue yellow
color[1] = ‘black‘;
console.log(color[0],color[1],color[2]); //red black yellow
console.log(color.length); // 3
color[5] = ‘white‘;
console.log(color.length); // 6
var colors = ‘‘;
for(var i =0;i < color.length;i ++){
colors += color[i] + ‘ ‘;
}
console.log(colors); //red black yellow undefined undefined white

4.数组的转换方法

所有的对象都具有 toLocaleString()、toString()、valueOf()方法。其中,调用数组的 toString()
方法会返回由数组中的每个值的字符串形式拼接而成的一个以逗号分隔的字符串。而调用 valueOf()方法返回的还是数组。实际上,为了创建这个字符串会调用数组每一项的 toString()
方法。例如以下代码:


var colors = [‘red‘,‘green‘,‘blue‘];
alert(colors.toLocaleString()); //red,green,blue
alert(colors.toString()); //red,green,blue
alert(colors.valueOf()); //red,green,blue
alert(colors); //red,green,blue

在这里,我们首先显示的调用了 toString() 和
valueOf()方法,以便返回数组的字符串表示,每个值的字符串表示拼接成了一个字符串,中间以逗号分隔。最后一行代码直接将数组传递给了 alert()
,由于 alert() 要接收字符串参数,所以它会在后台调用 toString() 方法,由此会得到与直接调用 toString()
方法相同的结果。

另外,toLocaleString() 方法经常也会返回与 toString() 方法和 valueOf()
方法相同的值,但是也不总是如此。当调用数组的 toLocaleString()
方法时,它也会穿件一个数组值的以逗号分隔的字符串,而与前面两种方法唯一的不同之处在于,这一次为了取得每一项的值,调用的是每一项的toLocaleString()
方法,例如以下代码:


var person1 = {
toString:function(){
return ‘person1ToString‘;
},
toLocaleString:function(){
return ‘person1ToLocaleString‘;
}
};
var person2 = {
toString:function(){
return ‘person2ToString‘;
},
toLocaleString:function(){
return ‘person2ToLocaleString‘;
}
};
var person = [person1,person2];
alert(person); //person1ToString,person2ToString
alert(person.toLocaleString()); //person1ToLocaleString,person2ToLocaleString
alert(person.toString()); //person1ToString,person2ToString

5.栈方法

在ECMAScript
中,数组可以表现的就像栈一样,后者是一种可以限制插入和删除项的数据结构。栈是一种LIFO(Last-In-First-Out,先进后出)的数据结构,而栈中项的插入(叫做推入)和移除(叫做弹出),只发生在一个位置
——栈的顶部。ECMAScript 为数组专门提供了 push() 和 pop() 两种方法,一遍实现类似栈的行为。

push()方法可以接收任意数量的参数,把他们逐个添加到数组末端,并返回修改后数组的长度。例如以下代码:


var arr = new Array();
var item1 = arr.push(‘name1‘,‘name2‘,‘name3‘);
console.log(arr.toString()); //name1,name2,name3
console.log(arr.length); //3
console.log(item1); //3

而 pop() 方法则从数组末尾移除最后一项,减少数组的 length 值,然后返回移除的项。例如以下代码:


var arr = new Array();
var item1 = arr.push(‘name1‘,‘name2‘,‘name3‘);
console.log(arr.toString()); //name1,name2,name3
console.log(arr.length); //3
console.log(item1); //3
var item2 = arr.pop();
console.log(arr.toString()); //name1,mame2
console.log(arr.length); //2
console.log(item2); //name3

【未完待续】

【javascript 引用类型(一)】,布布扣,bubuko.com

时间: 2024-12-16 23:19:07

【javascript 引用类型(一)】的相关文章

JavaScript引用类型和值类型

thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.45;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr&g

深入了解JavaScript引用类型之--Object、Array

1.Object类型 对象是某个特定引用类型的实例,新对象有两种创建方式: i.使用new操作符调用构造函数来创建. 1 var person = new Object(); 2 person.name = "zhangsan"; 3 person.age = 20; ii.使用对象字面量表示法来创建对象,可以简化创建包含大量属性的对象的创建过程. 1 var person = { 2 name = "zhangsan", 3 age = 20 4 }; var p

JavaScript——引用类型之数组

前言 之前本菜打算在写完基本类型后写引用类型Object的,因为Object是引用类型的基础,其他的引用类型也是以Object为根本.只是关于对象的基本认识与简单操作确实可写的不多,打算之后与原型.原型链一起写.本博将介绍引用类型Array,即JavaScript中的数组. Array 首先数组到底是什么呢?数组是一段线性分配的内存,它能通过整数计算偏移并访问其中的元素.遗憾的是这个定义是指其他语言中的数组,JavaScript中并没有此类数据结构.作为替代,JavaScript中基于对象创建了

JavaScript引用类型RegExp

本文和大家分享的主要是javascript 的引用类型RegExp相关内容,一起来看看吧,希望对大家 学习javascript有所帮助. ·  字面量 var  reg=/\d+/g; console.log( reg.test("789456"));//true ·  构造函数 var reg2=new RegExp("\\d+","g");console.log(reg2.test("1234444456"));//tru

javascript引用类型之对象Object

[前面的话] 引用类型:在javascript中,引用类型是一种数据结构,用于将数据和功能组织在一起,它也常被称为类.引用类型有时也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法. 引用对象的值(对象):是引用类型的一个实例.对象是某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数来创建的.构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而定义的.对象的别名是集合. Object:是一组数据和功能的集合 [1]对象创建:两种Object类型的创建方法 [1.

JavaScript引用类型和基本类型的区别

JavaScript变量可以用来保存的两种类型的值:基本类型值和引用类型值. 基本类型值有5种类型:undefined,null,boolean,number,string 引用类型值有两种类型:函数,对象. 基本类型值和引用类型值的特点: 1.基本类型值在内存中占据固定大小的空间,因此被保存在栈内存中: 2.从一个变量到另一变量复制的基本类型的值,会创建这个值得一个副本: 3.引用类型的值是对象,保存在堆内存中: 4.包含引用类型的值的变量实际存上包含的并不是对象本省,而是一个指向该对象的指针

JavaScript引用类型(二)

Date类型 Javascript中的Date类型是采用Java中的java.util.Date类基础上构建的,使用UTC时间来保存数据,可以精确到1970年1月1日之前或之后的285616年 创建一个日期对象,使用new关键字加构造函数声明(日期对象也是引用类型的),在不给构造函数传递任何参数的情况下,新对象自动获取当前的日期和时间,如下: var nowTime=new Date(); document.write(nowTime); //ed Aug 27 2014 13:31:12 GM

javascript引用类型之Date类型

Date类型使用自UTC(国际协调时间)1970年1月1日午夜(0时)开始经过的毫秒数来保存日期.要创建一个日期对象,使用new操作符和Date构造函数即可: var now = new Date(); 在调用Date构造函数而不传递参数的情况下,新创建的对象自动获得当前日期和时间.如果想根据特定的日期和时间创建时期对象,必须传入表示该日期的毫秒数.为了简化这一计算过程,javascript提供了两个方法:Date.parse()和Date.UTC(). 其中,Date.parse()方法接收一

javascript 引用类型 - 基本包装类型(深入理解基本包装类型和基本类型的区别)

Boolean.Number.String有的解释说是基本类型,但是官方的说明,他们是特殊的引用类型. 而据我总结,这三种类型比较特殊,既可以是基本类型,又可以是引用类型. 为什么呢,请看下文. 因为他们可以调用new新建对象. 例如:String str =new String("hello");.这样定义的话,足够说明引用类型的性质. 然后再用typeof(str)判断,返回来的数据是Object. 而当用 var str="hello"; 用typeof判断的