1.使用对象字面量定义对象
var person={};
使用这种方式创建对象时,实际上不会调用Object构造函数。
开发人员更喜欢对象字面量的语法。
 
2.有时候需要传递大量可选参数的情形时,一般来讲使用对象字面量来封装多个可选参数。
 
3.对象属性的点表示法与方括号表示法的区别
(1)功能上:两者没区别
 
(2)但是方括号的有点是可以通过变量来访问属性
例如:
    var person={
    name:"Nic"
}
点表示法:person.name
方括号表示法:var prop=“name”;
                        person[prop]
 
(3)还有一个优点是:
如果属性名中包含会导致语法错误的字符或者关键字,保留字时候,使用方括号不会错
例如:person["first name"]="OK";
 
(4)通常,建议使用点表示法
 
 
4.创建数组的问题
var colors=[1,2,]    //不要这样。这样会创建一个包含2个或3个项的数组
var opy=[,,,,,] //不要这样。这样会创建一个包含5个或6个项的数组
这是因为IE8及之前的版本在实现数组字面量方面有bug
 
使用字面量创建数组时,不会调用Array构造函数。
 
5.如果设置某个值的索引超过了数组现有项数。
如:var color=[1,2,3]
color[3]时,数组会自动增加到该索引值加1的长度
这时,color[3]的值就是undefined
 
6.数组的length不只是只读的。通过设置length该属性,可以不断向数组末尾添加新项。
 
7.数组转换成字符串 toString() join()
array.toString()    //返回以逗号分隔的字符串
array.valueOf() //返回的还是数组
array.join(",") //也可以
8.数组的栈方法 push() pop() 
栈是一种数据结构,也就是最新添加的项最早被移除(后进先出)。而栈中项的插入和移除,只发生在一个位置--栈的顶部。
ECMAScript提供了push()与pop()方法来实现这种栈。
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
pop() 方法用于删除并返回数组的最后一个元素。
例子:
var arr=[];
var count=arr.push('a','b'); //count=2
arr.push('c');
var item=arr.pop(); //移除最后一项 c item=c 并且改变数组长度
9.队列方法 shift() unshift() 
队列数据的访问规则是先进先出
ECMAScript提供了shift()来实现。
shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
 
10.重排序方法 sort() reverse()
ECMAScript提供了sort()与reverse()来实现。
sort()会调用每个数组项的tostring()方法,比较得到的字符串来排序。
 
 
11.数组的拼接 concat()

concat() 方法用于连接两个或多个数组。

该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

12.slice() 方法可从已有的数组中返回选定的元素。
 
13.位置方法:indexOf()与lastIndexOf()
 
14.迭代方法
ECMAScript5定义了下列5种方法,该5种方法都接收三个参数:数组项的值,该项在数组中的位置,数组对象本身                                        
every(),filter(),forEach(),map(),some()
例子:
var num=[1,2,3,4];

var res=num.every(function(item,index,array){
return (item>2)
}) //false 必须每一项都大于2,才返回true var res=num.some(function(item,index,array){
return (item>2)
}) //true 只要有一个大于2,就返回true var res=num.filter(function(item,index,array){
return (item>2)
}) //[3,4]
var res=num.forEach(function(item,index,array){
return (item>2)
}) //[1,4,9,16]
 

JavaScript高级程序设计--对象,数组(栈方法,队列方法,重排序方法,迭代方法)的更多相关文章

  1. JavaScript高级程序设计--对象创建的三种方法

    创建对象的三种方法: 1.工厂模式 工厂模式是软件工程领域广为人知的设计模式,这种模式抽象了创建具体对象的过程.下面是使用工厂函数创建对象的的一个例子. 2.构造函数: 从上面的例子中,我们看到构造函 ...

  2. 《Javascript高级程序设计》读书笔记之对象创建

    <javascript高级程序设计>读过有两遍了,有些重要内容总是会忘记,写一下读书笔记备忘 创建对象 工厂模式 工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题 缺点:没有解决 ...

  3. 《JavaScript高级程序设计》学习笔记(4)——引用类型

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中, ...

  4. JavaScript高级程序设计(第三版)学习,第一次总结

    Array类型 var arr = []; arr.length; //返回数组元素个数 改变length可以动态改变数组大小 检测数组 instanceof可以检测某个对象是否是数组,限制:只能是一 ...

  5. 读书时间《JavaScript高级程序设计》一:基础篇

    第一次看了<JavaScript高级程序设计>第二版,那时见到手上的书,第一感觉真是好厚的一本书啊.现在再次回顾一下,看的是<JavaScript高级程序设计>第三版,并记录一 ...

  6. JavaScript高级程序设计---学习笔记(一)

    今天,2017.3.17开始利用课余时间仔细学习<JavaScript高级程序设计>,将需要掌握的知识点记录下来,争取把书里的所有代码敲一遍并掌握. 1.标识符命名最好是第一个字母小写,剩 ...

  7. JavaScript高级程序设计学习(四)之引用类型

    在javascript中也是有引用类型的,java同样如此. javascript常见也比较常用的引用类型就熟Object和Array. 一个对象和一个数组,这个在前后端分离开发中也用的最多.比如aj ...

  8. 《Javascript高级程序设计》阅读记录(三):第五章 上

    这个系列以往文字地址: <Javascript高级程序设计>阅读记录(一):第二.三章 <Javascript高级程序设计>阅读记录(二):第四章 这个系列,我会把阅读< ...

  9. javascript高级程序设计学习笔记

    javascript高级程序设计,当枕头书已经好久了~zz  现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...

随机推荐

  1. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  2. ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”

    DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...

  3. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  4. Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)

    背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...

  5. MVVM设计模式和WPF中的实现(四)事件绑定

    MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  6. PHP 5.6 编译安装选项说明

    `configure' configures this package to adapt to many kinds of systems. Usage: ./configure [OPTION].. ...

  7. javascript之活灵活现的Array

    前言 就如同标题一样,这篇文章将会灵活的运行Array对象的一些方法来实现看上去较复杂的应用. 大家都知道Array实例有这四个方法:push.pop.shift.unshift.大家也都知道 pus ...

  8. Lambda

    Lambda Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数. 通过使用 lambda 表达式,可作为参数传递或作为函数调用值返回的本地函数. Lambda 表达式对于编写 LI ...

  9. [C#] 简单的 Helper 封装 -- RegularExpressionHelper

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  10. 深入解析Sqlite的完美替代者,android数据库新王者——Realm

    写在前面: 又到一年一度七夕虐狗节,看着大家忍受着各种朋友圈和QQ空间还有现实生活中的轮番轰炸,我实在不忍心再在这里给大家补刀,所以我觉得今天不虐狗,继续给大家分享有用的. 如果你比较关心androi ...