JavaScript高级程序设计-(4) 引用类型
1.object
var person={};//与new Object()相同
一般创建对象
var person=new Object();
person.Name="admin";
Json方式创建
var person={
Name:"admin",
Age:23
};
object作为参数传递
function GetPerson(Person p){
alert(p.Name)
}
SetPerson({Name:"admin",Age:12});
2.Array
Array初始化:
var arr=new Array(1,"a",3,4); var arr2=[1,"a",3,4]; var arr3=[];
检查是否数组:
if(value instanceof Array){
//对数组执行操作
}
//或者是否isArray方法
if(Array.isArray(value)){
//对数组执行操作
}
数组转换
var people={"A",34};
people.toString();//A,34
var colors=["red","green"];
colors.join(",");//red,green
栈方法
栈是一种后进先出的数据结构,最新添加的最早移除
push()方法可以接收任意数量的参数,添加到数组末尾,返回最新数组长度
pop()方法则则数组末尾移除最后一项,减少数组的length值
var colors=new Array();
var count=colors.push("red","green"); //插入2项
alert(count); //2 count =colors.push("brown"); //插入另一项
alert(count); //3 var item = colors.pop(); //取得最后一项
alert(item);// brown
alert(colors.length); //2
队列方法
shift()方法,移除数组中第一个项返回该项,同时将数组长度减1
unshift()方法,在数组前端添加并返回新数组长度
例1:

例2:


排序方法:
reverse()和sort()方法,reverse()实现数组数值反转,sort按照顺序排序
操作方法:
concat() 将接收的参数添加到副本的末尾,返回新构建的数组,不更改原数组数据
var colors=["red","green","blue"];
var colors2=colors.concat("yellow",["black","brown"]); alert(colors); //red,green,blue
alert(colors2); //red,green,blue,yellow,black,brown
slice() 返回从该数组指定为主开始到当前数组末尾的所有项,也不影响原数组
var colors=["red","green","blue","yellow","purple"];
var colors2=colors.slice(1);
var colors3=colors.slice(1,4); alert(colors2);//green,blue,yellow,purple
alert(colors3);//green,blue,yellow
splice() 向数组中部插入项
删除:可以删除任意数量的项,只需指定2个参数:要删除的第一项的位置和要删除的项数。
插入:可以向知道位置插入任意数量的项,只需提供3个参数,起始位置,0(要删除的项数)和要插入的项
替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3个参数;起始位置,要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等
var colors=["red","green","blue"];
var removed=colors.splice(0,1);
alert(colors); //green,blue
alert(removed); //red,返回的数组中只包含一项 removed=colors.splice(1,0,"yellow","orange");// 从位置1开始插入2项
alert(colors); //green,yellow,orange,blue
alert(removed); //返回的是一个空数组 removed=colors.splice(1,1,"red","purple");//插入2项,删除1项
alert(colors); //green,red,purple,yellow,orange,blue
alert(removed); //yellow,返回数组中只包含一项
位置方法
IndexOf()和LastInfodexOf()查找索引位置
迭代方法
对数组中的每一项运行给定函数,该函数传入的方法接收3个参数:数组项的值,该项的索引和数组对象本身
every():如果函数对每一项都返回true,则返回true
filter():返回该函数会返回true的项组成的数组
forEach:方法没有返回值
map():返回每次函数调用的结果组成的数组
some():如果函数对任一项返回true,则返回true
var numbers=[1,2,3,4,5,4,3,2,1];
var everyResult =numbers.every(function(item,index,array){
return (item)>2;
}); alert(everyResult); //false
var someResult = numbers.some(function(item,index,array){
return (item>2);
});
alert(someResult); //true
var numbers=[1,2,3,4,5,4,3,2,1];
var filterResult=numbers.filter(function(item,index,array){
return (item>2);
});
alert(flterResult); //[3,4,5,4,3]
var numbers=[1,2,3,4,5,4,3,2,1];
var mapResult=numbers.map(function(item,index,array){
return (item*2);
});
alert(mapResult); //[2,4,6,8,10,8,6,4,2]
var numbers=[1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item,index,array){
//执行操作
});
缩小方法
reduce()和reduceRight(),迭代数组所有项,构建一个最终返回值
reduce()从第1项开始,逐个遍历
reduceRight()从数组最后一项开始,遍历到第1项
var values=[1,2,3,4,5];
var sum=values.reduce(function(prev,cur,index,array){
return prev+cur;
});
alert(sum); //15
var values=[1,4];
var sum=values.reduceRight(function(prev,cur,index,array){
return prev-cur;
});
alert(sum); //3
3.RegExp类型
RegExp类型支持正则表达式
var expression=/pattern/flags;
4.基本包装类型
为了便于操作基本类型的值,提供了Boolean,Number和String,详细的不说了
var s1=new String("some text");
s1.color="red";
alert(s1.color); //undefined
var s1=new String("some text");
alert(s1 instanceof string); //true
5.单体内置对象
Global全局对象
1.URI编码方法
2.eval()方法
eval()是一个解析器,接收1个参数
eval("alert('hi')");等同于alert('hi')
eval("var msg='hello world'");
alert(msg); //hello world
Math对象
random()方法
var num=Math.floor(Math.random()*10+1);产生1到10的数值
JavaScript高级程序设计-(4) 引用类型的更多相关文章
- 《JavaScript高级程序设计》学习笔记(4)——引用类型
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第五章内容. 在ECMAScript中, ...
- JavaScript高级程序设计学习(四)之引用类型
在javascript中也是有引用类型的,java同样如此. javascript常见也比较常用的引用类型就熟Object和Array. 一个对象和一个数组,这个在前后端分离开发中也用的最多.比如aj ...
- 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介
前言: 为什么会想到把<JavaScript 高级程序设计(第 3 版)>总结记录呢,之前写过一篇博客,研究的轮播效果,后来又去看了<JavaScript 高级程序设计(第3版)&g ...
- 《JavaScript高级程序设计》读书笔记--前言
起因 web编程过程使用javascript时感觉很吃力,效率很低.根本原因在于对javascript整个知识体系不熟,看来需要找些书脑补一下,同时欢迎众网友监督. 大神推荐书籍 看了博客大神们推荐的 ...
- 阅读摘录《javascript 高级程序设计》01
前言: 因为工作需要,所以开始主攻前台JS方面的技术.在以前的工作中,使用过这门脚本语言.但是都是比较凌乱的,用到什么学什么,只是为了实现业务,而去使用. 不会考虑到代码优化,封装对象等.今次特意借了 ...
- 《JavaScript高级程序设计》学习笔记(5)——面向对象编程
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...
- 《JavaScript高级程序设计》学习笔记(3)——变量、作用域和内存问题
欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第四章内容. 1.函数:通过函数可以封装 ...
- 读书时间《JavaScript高级程序设计》一:基础篇
第一次看了<JavaScript高级程序设计>第二版,那时见到手上的书,第一感觉真是好厚的一本书啊.现在再次回顾一下,看的是<JavaScript高级程序设计>第三版,并记录一 ...
- 读书笔记(06) - 语法基础 - JavaScript高级程序设计
写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了. 答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章. 对此,笔者换了随 ...
随机推荐
- 20155217-杨笛-c与java
命是弱者的借口,运是强者的谦词 你有什么技能比大多数人(超过90%以上)更好? 针对这个技能的获取你有什么成功的经验? 与老师博客中的学习经验有什么共同之处? 其实我经常会去想自己有什么拿得出手的优点 ...
- NOSDK--关于android傻瓜式的分包设想
一直以来,我总是以“够用就好”为理由,很少再维护过自己的一键打包的项目.最近接触了棱镜的sdk,感觉将apk包上传到棱镜服务器,后台来进行分包这种简单的方式很招人待见. 原理似乎不难,apk即zip压 ...
- 3D游戏编程大师技巧──环境搭建
刚开微博,想借助这个平台与大家交流,写下自己的学习记录,希望得到大家的批评指正. 好了,进入主题.这段时间对游戏编程很感兴趣,于是在网友的推荐下开始学习<3D游戏编程大师技巧>这本书.今天 ...
- CSS实现可变行数垂直居中
<html> <head> <style> .vcenter { position: relative; height: 100%; width:50px; } . ...
- shell脚本重新挂载出问题的卷
#!/bin/bash#卷的全路径示例#pathexample =mount -t cetusfs 127.0.0.1:/cinderv/var/lib/cinder/volumes/0f6a20f4 ...
- 前端网老姚浅谈:怎么学JavaScript?
作者:小不了链接:https://zhuanlan.zhihu.com/p/23265155来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 鉴于时不时,有同学私信问我( ...
- PHP 文件夹操作「复制、删除、查看大小」迭代实现
"既然递归能很好的解决,为什么还要用迭代呢"?主要的原因还是效率问题-- 递归的概念是函数调用自身,把一个复杂的问题分解成与其相似的多个子问题来解决,可以极大的减少代码量,使得程序 ...
- python string模块
string.ascii_lowercase ='abcdefghijklmnopqrstuvwxyz' string.ascii_uppercase ='ABCDEFGHIJKLMNOPQRSTUV ...
- Python flask 基于 Flask 提供 RESTful Web 服务
转载自 http://python.jobbole.com/87118/ 什么是 REST REST 全称是 Representational State Transfer,翻译成中文是『表现层状态转 ...
- WAMP错误提示:HTTP Error 404.The requested resource is not found
原因: 本地80端口被占用,需要修改WAMP的默认端口 修改设置: 找到 bin/apache/apache***/conf/httpd.conf文件 将文件中的80修改为8088 (注:修改三个位置 ...