1、Object类型

  对象是某个特定引用类型的实例,新对象有两种创建方式:

  i、使用new操作符调用构造函数来创建。

 var person = new Object();
person.name = "zhangsan";
person.age = 20;

  ii、使用对象字面量表示法来创建对象,可以简化创建包含大量属性的对象的创建过程。

 var person = {
name : "zhangsan",
age : 20
};

  var person = {} <==> var person = new Object();创建一个只包含默认属性和方法的对象。通过对象字面量创建对象时不会调用Object构造函数的.

  对象字面量也是向函数传递大量可选参数的首选方式,通常必须值使用命名参数,而大量的可选参数则用对象字面量封装。这里display方法没有命名参数,可以通过arguments参数对象获取到传入的参数列表。arguments[1]获取到的就是这个匿名对象。访问对象的属性可以 对象.属性 或者 对象["属性"],person.name 或者person["name"]。

function display(){
alert(arguments[0]);
console.log(typeof arguments[1].age);
} display(123, {name : "zhangsan", age : 20});//输出20

2、Array类型

  ECAMScript中的数组每一项可以保存任何类型的数据,也就是说如果第一项保存字符串,第二项可以保存数字...数组的大小可以动态调整,随着数据的添加自动增长以容纳新增数据,java的数组的长度可是不变的,这个数组功能有点强大...javascript数组的这个特性感觉有点像java中List集合。写着写着思考到什么时候在java中用数组或者集合,不跑题。

  创建数组的方式有以下两种:

 //1.
var colors = new Array();
var colors = new Array("red", "blue");//可以省略new操作符,如果看到不要奇怪 //2.利用数组字面量创建数组
var colors = ["red", "blue"];

  数组的length属性:不是只读的,可以通过修改数组的lenght属性改变数组的长度(添加元素,删除元素);

var colors = ["red", "blue"];
colors.length = 3;
console.log(colors[2]); //undefined

  这时数组的长度变成了3,最后这个语句会输出undefined;

  此外利用length属性也可以方便的在数组的末尾添加新项。这个比较有趣...大家都知道数组的下标从0开始,最大下标是lenght-1.

 var colors = ["red", "blue"];
colors[length] = "black"; 

  下面开始介绍数组的具有的功能强大的方法。(并不是所有)

  1、栈方法:栈的数据结构是后进先出
  push(): 把元素添加到数组的末尾,返回数组长度;pop():移除数组末尾最后一个元素,并返回移除的元素。

  2、队列方法:先进先出
  shift():移除数组中的第一项并返回该项,unshift():把元素添加到数组的第一项。

  3、重排序方法:sort()、reverse(),我想这两个方法有什么用处大家看名字就应该知道。下面来看重点了解下sort方法。

 var values = [1, 2, 5, 10, 15];
alert(values.sort());//1,10,15,2,5

  返回的结果有点出乎我们的预料,原因在于即使数组排序的时候全都是数字,比较的也是字符串的大小,就是比较的那个什么码来着...那么要对数字进行正常的排序要怎么解决呢?sort方法可以接收一个比较器方法,当这个返回负数的时候,会把value1放到前面,返回0表示两个值相等,返回正数的话就会把value1放到后面。

 var values = [1, 2, 5, 10, 15];
alert(values.sort(compare)); //1,2,5,10,15
function compare(value1, value2){
return value1 - value2;
}

  4、操作方法

  concat():可以把传入的数组拼接到原数组的末尾
  slice():类似于字符串的截取方法subString
  splice():很强大的一个方法,主要用于向数组中插入项。还可以删除项、替换项。
    删除splice(要删除的第一项位置,要删除的项数),
    插入splice(插入位置,0,插入内容);
    替换splice(位置,替换项数,替换内容);

  5、位置方法

  indexOf():从头开始查找 lastIndexOf():末尾开始查找
  比较用的是全等操作符(===),因此要查找的项必须严格相等。ps:你真的了解JavaScript中的==吗?

  6、迭代方法

  every(), filter():返回符合条件的数组,你要筛选符合某些条件的项时,很有用吧。 foreach(), map():返回进行特定处理的数组, some()。

 var num = new Array(1, 2, 3, 4, 5, 10);
var newArray = num.filter(function(item, index, array){return item > 2;});
alert(newArray);//3, 4, 5, 10

  Over.如果觉得不错,请帮忙点下推荐,给我点动力。另外有错误的地方欢迎大家指出,共同学习进步。感谢您的浏览!

浅析JavaScript引用类型之--Object、Array的更多相关文章

  1. JavaScript引用类型之Object类型

    在JavaScript中大多数的引用类型都是Object的实例,Object类型也是使用最多的类型! 创建Object类型实例的方式有两种,下面分别来分析一下: (1)第一种是使用new操作符后跟Ob ...

  2. JavaScript引用类型之Object类

    ECMAScript中的Object类跟Java中的Object类相似,ECMAScript中的全部类都由这个类继承而来,Object类中的全部属性和方法都会出如今其他类中,所以理解Object类,就 ...

  3. JavaScript引用类型与对象

    1.引用类型 引用类型的值(对象)是引用类型的一个实例.引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法. 对象是某个特定引用类型的实例.新对象是使用new操作符后跟一个构造 ...

  4. JavaScript引用类型

    引用类型虽然看起来和类很相似,但是它们却是不同的概念,引用类型的值,也就是对象是引用类型的一个实例.在Js中引用类型主要有Object,Array,Date,正则,Function等. 数组Array ...

  5. 再谈js对象数据结构底层实现原理-object array map set

    如果有java基础的同学,可以回顾下<再谈Java数据结构—分析底层实现与应用注意事项>:java把内存分两种:一种是栈内存,另一种是堆内存.基本类型(即int,short,long,by ...

  6. Javascript语言精粹之Array常用方法分析

    Javascript语言精粹之Array常用方法分析 1.Array常用方法分析 1.1 Array.prototype.sort() Javascript的默认比较函数假定被排序元素都是字符串,所以 ...

  7. 浅析 JavaScript 中的 函数 currying 柯里化

    原文:浅析 JavaScript 中的 函数 currying 柯里化 何为Curry化/柯里化? curry化来源与数学家 Haskell Curry的名字 (编程语言 Haskell也是以他的名字 ...

  8. JavaScript数据类型检测 数组(Array)检测方式

    前言 对于确定某个对象是不是数组,一直是数组的一个经典问题.本文专门将该问题择出来,介绍什么才是正确的javascript数组检测方式 typeof 首先,使用最常用的类型检测工具--typeof运算 ...

  9. 浅析 JavaScript 中的 函数 uncurrying 反柯里化

    柯里化 柯里化又称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果. 因此柯里化的过程是 ...

随机推荐

  1. 用Time Machine做更换电脑工具

    简介: Time Machine这个工具,是直接备份硬盘上的内容.所以,它是直接有备份系统的. 准备: 1.准备一个移动硬盘,存贮空间大于你需要备份系统空间 操作流程: 1. 用Disk Utilit ...

  2. My97日历控件常用功能记录

    My97相信大家都不陌生,应该是我所见过的最强大的一个日历控件了,最近的项目中也比较多地用到了此控件,而且项目中经常会有不同时间范围的需求,在此列出一些比较常用的日期范围格式的设置,尽管在My97的官 ...

  3. ios 图片转视频

    转自:http://blog.iosxcode4.com/archives/160 用到的FrameWork有: MediaPlayer.framework,QuartzCore.framework, ...

  4. Excel每隔两行自动求和一次怎么操作?

    今天ytkah得到一份数据,要求进行统计分析,由于是原始数据,还没处理过,数据量有点大,如下图所示(Excel每隔两行自动求和),每天的数字由两项组成,男生的人数.消费值和女生的人数和消费值,数字都在 ...

  5. Logstash最佳实践

    http://udn.yyuap.com/doc/logstash-best-practice-cn/index.html

  6. ExtJs之进度条实现

    慢慢按书上的作. <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta h ...

  7. c# 委托 和 事件

    当初学C#的时候,没有完全吃透的,只能现在继续了...  欠老账.... http://www.cnblogs.com/chengxingliang/archive/2013/05/21/305191 ...

  8. Log4J入门教程(一) 入门例程

    Log4J的入门简介学习 简介: Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务器.NT的事件记录器.U ...

  9. PHP组合模式、策略模式

    一.问题 模拟不同课程有不同的收费方式,并且能灵活改变(新增或删减),如讲座可以固定收费也可改为按时收费,研讨会也是. 二.模式简介及关键点 1.在父类代码中使用条件语句是一种退倒,可以用多态来代替条 ...

  10. 创业者拿到融资别高兴太早,当心TS中的优先清算权

    最近创投圈的新闻读起来真是让人有些绝望啊,一家家创业公司接连宣告倒闭,其中不乏一些走在比较后面的“明星企业”,冷不丁冒出点消息,却是创始人发的公告,宣布公司资金链断裂,进入破产清算程序,或被低价并购. ...