美文网首页
2018-11-06

2018-11-06

作者: kathyever | 来源:发表于2018-11-07 09:09 被阅读0次

打卡时间:20:00-22:00

引用类型

ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。常常被称为类。引用类型有时候也会被称为对象定义,因为它们描述的是一类对象具有的属性和方法。
虽然引用类型与类看起来相似,但它们并不是相同的概念

var person = new object();
//这行代码创建了object引用类型的一个新实例,将该实例保存在变量person中。使用的后遭函数是object

object类型

object是ECMAScript中使用最多的一个类型。
创建object实例的方式有两种:
1、使用new操作符后跟object构造函数,例:

var person = new object();
person.name = "kathy";
person.age=2;

2、使用对象字面量表示法。对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。例:

var person = {//左边的花括号表示对象字面量的开始,在这里表示一个表达式的开始
    name:"kathy",//在对象字面量中,使用逗号来分隔不同的属性
    age:2//在age2后面不能添加逗号,因为age是这个对象的最后一个属性。
    //最后一个属性后面添加逗号,会在IE7及早版本和opera中导致错误
};

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

var person = {
    name:"kathy",
    age:2,
    5:true//这里的数值属性名会自动转换为字符串
};

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

var person = {};//与new object()相同
person.name = "kathy";
person.age = 2;

虽然前面任何一种都可以定义对象,但是开发人员更青睐对象字面量语法。因为这种语法要求的代码量少,而且能够给人封装数据的感觉。实际上,对象字面量也是向函数传递大量可选参数的首选方式,例:

function displayInfo(args){
    var output = "";
    if (typeof args.name =="string"){
    output +="Name:" + args.name + "\n";
    }
    if (typeof args.age =="number"){
    output +="Age:" + args.age + "\n";
    }
    alert(output);
}
displayInfo({
    name:"kathy",
    age:2
});
displayInfo({
    name:Greg
});
//在函数内部,我们通过typeof操作符来检测每个属性是否存在,然后再基于相应的属性来构建一条要显示的消息。

这种传递参数的模式最适合需要向函数传入大量可选参数的情形。对象字面量可以封装多个可选参数。

访问对象属性是有两种方法:点表示法和方括号表示法,例

alert(person.name);//"kathy" 点表示法
alert(person["name"])//kathy 方括号表示法

方括号语法主要的有点是可以通过变量来访问属性,例:

var propertyName="name";
alert(person[propertyName]);

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

person["first name"]="kathy"
//由于“first name”中包含一个空格,所以不能使用点表示法来访问它。然而属性名中是可以包含非字母非数字的,这时候可以使用方括号来访问。

通常,除非必须使用变量来访问属性,否则建议使用点表示法。

Array类型

ECMAScript与其他语言的不同之处,在于ECMAScript数组的每一项可以保存任何类型的数据。可以用数组的第一个位置来保存字符串,用第二位置来保存数值,第三位置来保存对象,一次类推。而且,它的数组大小是可以动态调整的,可以随着数据的添加自动增长以容纳新增数据。
创建数组的基本方式有两种:

1、使用Array构造函数。
var colors=new Array();

如果预先知道数组要保存的数量,也可以给构造函数传递数量,该数量会自动变成等length属性的值,例:
var colors=new Array(20);

也可以向它传递数组中应该包含的项,例:
var colors=new Array(“red ”,“blue”,“green”);

也可以创建数组。如果传递的是数值,则会按照该数值创建包含给定项数的数组;如果传递的是其他类型的参数,则会创建包含那个值的只有一项的数组。例:

var colors=new Array(3);//创建一个包含3项的数组
var names=new Array("kathy");//创建一个包含1项,即字符串“kathy”的数组

2、使用数组字面量表示法
数组字面量由一堆包含数组项的方括号表示,多个数组项之间以逗号隔开。例:

var colors = ["red","blue","green"];//创建一个包含3个字符串的数组
var names=[];//创建一个空数组
var values=[1,2,];//不要这样!这样会创建一个包含2或3的数组
var options={,,,,,};//不要这样!这样会创建一个包含5或6的数组
//不建议后面两项,是因为在ie8之前的版本ECMAScript实现在数组字面量方面存在bug,强烈建议不要使用这种语法

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

var colors=["red","blue","green"];//定义一个字符串数组
alert(colors[0]);//显示第一项
colors[2]="black";//修改第三项
colors[3]="yellow"//新增第四项

数组的项数保存在其length属性中,这个属性始终会返回0或更大值,例:

var colors=["red","blue","green"];
var name=[];

alert(colors.length);//3
alert(name.length);//0

//数组的length属性不是只读的,通过设置属性,可以从数组的末尾移除项或者向数组中添加新项:
colors.length=2;
alert(colors(2));//underfined

利用length属性也可以方便的在数组末尾添加新项:

var colors=["red","blue","green"];//创建一个包含3个字符串的数组
colors[colors.length]="black";添加黑色
colors[colors.length]="brown"添加brown

colors.length就是一个数字

var colors=["red","blue","green"];//创建一个包含3个字符串的数组
colors[99]="black";//在99位置添加一个颜色
alert(colors.length);//100
//这个例子中,在colors的数组位置99中插入一个值,结果数组新长度就是(99+1)100,而3-98实际上都是不存在的,若是访问都是返回undefined

相关文章

网友评论

      本文标题:2018-11-06

      本文链接:https://www.haomeiwen.com/subject/yoouxqtx.html