美文网首页
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