五.引用类型

                                            引用类型     

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

定义:引用类型是一种数据结构,用于将数据和功能组织在一起。有时候也被称为对象定义,因为他们描述的是一类对象所具有的属性和方法。

var person = new Object(); 

解释:新对象是使用new操作符后跟一个构造函数来创建的。  

一  Object类型

Object是ECMAScript中使用最多的一个类型。

创建Object实例的方式有两种。

1)使用new操作符后跟Object构造函数

         var person=new Object();

          person.name="Nicholas";

          person.age=29;

2)使用对象字面量方法
         var person={
                name:"sara",
                age:29
}
注:左边的花括号便是对象字面量的开始。属性也可以是字符串
        var person={
               "name":"sara",
                "age":29,
                5        :true
} 
使用字面量对象语法时,如果留空其花括号,则可以定义默认属性和方法的对象。

访问对象属性的知识点:
一般都使用点(person.name)在javascript中也可以使用方括号(person["name"])义字符串的形式放在方括号中。
方括号的优点:a可以通过变量来访问属性
                var propertyName="name"
                alert(person["
propertyName
"]);
                          b如果属性命中包含会导致错误的字符,或者属性名使用的关键字或保留字,都可以使用方括号方法。
               person["frist name"]="sara";
通常,除非必须使用变量来访问属性,否则我们建议使用点表示法。

二  Array 类型 

ECMAScript数组的每一项可以保存任何类型的数据。
1)使用Array构造函数
                var  colors= new Array();
                
var  colors= new Array(20);//如果预先知道数组保存的项目数量,可以直接传递给构造函数。length:20
          
var  colors= new Array("red","blue","green");
给构造函数传递一个值时也可以创建数组。可以省略new操作符。
2)使用数组字面量表示法创建。
                var colors=["red","blue","green"];
                var name=[];
                var values=[1,2,];不要这样,会创建2或者3项数组。
                var options=[,,,,,];
给构造函数传递值时也可以创建数组。
数组的length属性知识点:length不是只读的,通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项
                
var colors=["red","blue","green"];
                colors.length=2;
                alert(colors[2]);//undefined
     colors有三个值,将length设置为2会移除最后一项(jiyu0的数字索引),结果就是undefined
                
var colors=["red","blue","green"];
                colors[99]="black";
                alert(colors.length);//100

检测数组

ECMAScript 5新增 if (Array.isArray(value)){
对数组进行某些操作
}确定某个值到底是不是数组。(IE9+...)
ECMAScript3 if(value instanceof Array){对数组进行某些操作}

转换方法

toLocalString(),toString和valueOf()方法。
                var colors=["red","blue","green"];
                alert(colors.toString());//red,bule,green
                alert(colors.valueOf());//red,bule,green
                alert(colors);//red,bule,green
注:结果一样。
                 var person1={
	            toLocaleString:function(){
		          return "Nikolaos";
	          },
	            toString:function(){
		          return "Nicholas";
	          }
                  };

              var person2={
	            toLocaleString:function(){ 
		           return "Grigorios";
	          },
	           toString:function(){
		          return "Greg"
	         }
                 };
             var people=[person1,person2];
             alert(people);//Nicholas,Greg
             alert(people.toString());
//Nicholas,Greg

alert(people.toLocaleString());//Nicholas,Grigorios
证明:三个方法不总是返回相同的值。
使用join()方法传入值,可以使用不同的分隔符来构建这个字符串。
             alert(colors.join("||"))//red||green||blue

栈方法

栈是一种后进先出的数据结构。栈中的插入和移除只发生在栈的顶部。ECMAScript为数组专门提供了push()和pop()方法,以便实现类似栈的行为。
            var colors=new Array();//创建一个数组
            var count=colors.push("red","green");//推入两项
            alert(count);//2
            count=colors.push("black");//推入另一项
            alert(count);//3
            var item=colors.pop();//取得最后一项
            alert(item);//black
            alert(colors.length);//2

队列方法

    规则是先进先出,队列在列表的末端添加项,从列表的前端移除。
 push()是向数组末端添加项;shift()从数组前端取得项并返回该项,同时减少该数组的长度。
            var colors=new Array();//创建一个数组
            var count=colors.push("red","green");//推入两项
            alert(count);//2
            count=colors.push("black");//推入另一项
            alert(count);//3
            var item=colors.shift();//取得第一项
            alert(item);//red
            alert(colors.length);//2
unshift()ie8才能兼容能在数组前端添加任意个项并返回数组的长度。pop()方法则从数组末尾移除最后一项,减少数组的值。
             var colors=new Array();//创建一个数组
             var count=colors.unshift("red","green");//推入两项
             alert(count);//2
             count=colors.unshift("black");//推入另一项
             alert(count);//3
             var item=colors.pop();//取得最后一项
             alert(item);//green
             alert(colors.length);//2

七 重排序方法

    reverse()[反转数组项的顺序]和sort()
            var values=[1,2,3,4,5];
            values.reverse();
            alert(values);//5,4,3,2,1
     sort()默认情况下会按照升序排列数组项,为了实现排序,会调用toString()转型方法,然后比较得到的字符串。
最好的比较方法是接受一个函数来进行比较。
             
                  
解释:如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数应该位于第二个之后则返回一个整数。如果是降序只要返回比较函数返回的值即可。
              
              
对于数值类型或者valueOf()方法会返回数值型的对象类型。可以用简单的比较函数。如上。

八 操作方法

ECMAScript为操作已经包含在数组中的项提供了很多方法。concat()这个方法会创建当前数组一个副本,然后接收到的参数添加到这个副本的末尾然后返回新构建的数组。
             
              
              
slice()它能够基于当前数组中的一个或多个项创建一个新数组。一个参数,则返回从该数据指定位置开始到当前数组末尾的所有项。如果两个参数,则返回起始位置和结束位置之间的项-不包括结束位置的项。

              
                 
                

splice()恐怕是最强大的算法了,主要用途是向数组中不插入项。
删除:可以删除任意的项,只需提供两个参数(要删除的第一项的位置,删除的项数);
插入:可以向指定位置插入任意数量的项。只需三个参数(起始位置,要删除的项数,要插入的项)
替换:可以指定位置插入任意数量的项,且同时删除任意数量的项。
(起始位置,要删除的项数,要插入任意量的项)插入的项不必与删除的项数相等。
返回的时总是数组,包含从原始数组中删除的项,如果没有删除项则返回一个空数组。
九 位置方法
indexOf()从数组的的开头向后找, lastindexOf()从末尾开始向前查找。
都返回要查找的项在数组中的位置,或者没有找到的时候返回-1.



















































 




    

                

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值