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. LeetCode-4MedianofTwoSortedArrays(C#)

    # 题目 4. Median of Two Sorted Arrays There are two sorted arrays nums1 and nums2 of size m and n resp ...

  2. 旺财速啃H5框架之Bootstrap(二)

    突然感觉不知道写啥子,脑子里面没水了,可能是因为今晚要出去浪,哈哈~~~提前提醒大家平安夜要回家哦,圣诞节生00000000000这么多蛋....继续 上一篇的已经把bootstrap了解个大概了,接 ...

  3. 【开源】.Net 分布式服务中心

    分布式服务中心 开源地址: http://git.oschina.net/chejiangyi/Dyd.BaseService.ServiceCenter 当垂直应用越来越多,应用之间交互不可避免,将 ...

  4. Vertica 数据库知识汇总篇

    Vertica 数据库知识汇总篇(更新中..) 1.Vertica 集群软件部署,各节点硬件性能测试 2.Vertica 创建数据库,创建业务用户测试 3.Vertica 数据库参数调整,资源池分配 ...

  5. [数据结构]——堆(Heap)、堆排序和TopK

    堆(heap),是一种特殊的数据结构.之所以特殊,因为堆的形象化是一个棵完全二叉树,并且满足任意节点始终不大于(或者不小于)左右子节点(有别于二叉搜索树Binary Search Tree).其中,前 ...

  6. CSS中强悍的相对单位之em(em-and-elastic-layouts)学习小记

    使用相对单位em注意点 1.浏览器默认字体是16px,即1em = 16px,根元素设置如下 html{ font-size: 100%; /* WinIE text resize correctio ...

  7. TabLayout + ViewPager

    一.实现思路 1.在build.gradle中添加依赖,例如: compile 'com.android.support:support-v4:23.4.0'compile 'com.android. ...

  8. 二叉树的创建和遍历(C版和java版)

    以这颗树为例:#表示空节点前序遍历(根->左->右)为:ABD##E##C#F## 中序遍历(左->根->右)为:#D#B#E#A#C#F# 后序遍历(左->右-> ...

  9. requests源码阅读学习笔记

    0:此文并不想拆requests的功能,目的仅仅只是让自己以后写的代码更pythonic.可能会涉及到一部分requests的功能模块,但全看心情. 1.另一种类的初始化方式 class Reques ...

  10. [PHP源码阅读]array_push和array_unshift函数

    在PHP中,在数组中添加元素也是一种很常用的操作,分别有在数组尾部和头部添加元素,看看PHP内部是如何实现数组插入的操作. 我在github有对PHP源码更详细的注解.感兴趣的可以围观一下,给个sta ...