5. 引用类型学习笔记
来源:互联网 发布:北通 手柄 知乎 编辑:程序博客网 时间:2024/04/30 15:38
1.基础类型和引用类型区别
ECMAScript5包含两个不同类型的值:基本类型值和引用类型值。
基本类型:Undifined、Null、Boolean、Number和String。
可以直接操作保存在变量中的实际值。
引用类型:Object、Array、Date、RegExp、Function、基本包装类型、单体内置对象。
保存在堆内存中的对象,与其它语言不同的是,你不可以直接访问堆内存空间中的位置和操作堆内存空间。只能通过操作对象的在栈内存中的引用地址。所以引用类型的数据,在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存在堆内存中的对象。
2.Object类型
①创建方式:
a.new Object(); new 后面加上Object的构造函数。
b.对象字面量表示法。
②属性:person.name 或 person[“name”]
[ ]方式优点:a.可以通过变量访问,如var a = “name”; person[a];
b.尤其是在属性名可能存在语法错误或者有关键字、空格等,可以直接用[],如person[“first name”];
一般使用. 的方式访问。
3.Array 类型
①创建方式:
a. new Array()
var arr = new Array(); var arr = new Array(3); var arr = new Array("a","b");
b. Array()
var arr = Array(); var arr = Array(3); var arr = Array("a","b");
c. []
var arr = []; var arr = ["a","b"];
**特殊小例:
var date = new Date(‘January 32, 2017’);
在IE上,输出Wed Feb 01 2017 00:00:00 GMT+0800
在Chrome、Opera、Safari上,输出Invalid Date
在Firefox上,输出
②常用方法
var value = [1,2];
a. Array.isArray(value);//判断value是否是数组类型
b. value.toString()返回字符串,value.valueOf()返回数组。
toLocaleString()返回本地字符串:
c. value.join(“||”);//输出”1||2”
d. 栈方法(Last-In-First-Out 后进先出)
push(): 可接收任意数量的参数,在数组尾部逐个添加,并返回修改后的数组新长度。
pop(): 从末尾移除最后一项,减少数组长度length,并返回移除的项。
e. 队列方法(First-in-First-Out 先进先出)
shift():从数组移除第一项,减少数组长度length,并返回移除的项。
unshift():添加数组第一项,增加数组长度length,并返回修改后的数组新长度。
f.排序方法
reverse():逆序排序。
arrayObject.sort(sortby):sortby 可选。规定排序顺序。必须是函数。(原理是带分区的快速排序)。
function compare(v1,v2){ return v2-v1;}function compareAsc(v1,v2){ return v1-v2;}var arr = [5,2,3,1,10,12,4];arr.sort();arr.sort(compare);arr.sort(compareAsc);
g.操作方法
concat():连接两个或多个数组,不会改变现有数组。
var str = "str";str.concat("ing");var arr = ["arr"];arr.concat("ay",["&","string"]);
slice(start,end):从已有的数组中返回选定的元素数组,不会改变现有数组。
var arr = ['a','b','c'];arr.slice(1);arr.slice(1,2);arr.slice(-2,-1);arr.slice(2,1);
splice(index,howmany,item1,…..,itemX):从数组中添加/删除项目,然后返回被删除的项目,会改变现有数组。
var arr = ['a','b','c'];arr.splice(1,1);arr.splice(1,0,'d','e');
h.位置方法
indexOf(); 返回某个指定的字符串值在字符串中首次出现的位置。
lastIndexOf(); 返回一个指定的字符串值最后出现的位置。
var arr = ['a','b','c','c','d'];arr.indexOf('c');arr.lastIndexOf('c');
i. 迭代方法
every(): 对数组每一项运行给定的函数,如果每一项都为true,则返回true。
some(): 一项为true则返回true。
filter(): 返回true组成的数组。
map(): 返回调用结果组成的数组。
forEach(): 循环,无返回值。
var num = [1,2,3,4]; var everyResult = num.every(function(item,index,array){ return item>2; }); console.log('everyResult:'+everyResult); var someResult = num.some(function(item,index,array){ return item>2; }); console.log('someResult:'+someResult); var filterResult = num.filter(function(item,index,array){ return item>2; }); console.log('filterResult:'+filterResult); var mapResult = num.map(function(item,index,array){ return item*2; }); console.log('mapResult:'+mapResult); num.forEach(function(item,index,array){ console.log('item:'+item+'; index:'+index+'; array:'+array); });
j. 缩小方法
reduce(): 这个函数的任何值都会作为第一个参数自动传给下一项。
例:用reduce() 求出数组中所有值之和。
var num = [1,2,3,4]; var sum = num.reduce(function(prev,cur,index,array){ console.log('prev:'+prev+'; cur:'+cur); console.log('return:'+(prev+cur)); return prev+cur; }); console.log('sum:'+sum);
reduceRight(): 从数组最后一项开始,遍历到第一项。
4.Date类型
Date.parse(cur): 指定的日期和时间据 1970/1/1 午夜(GMT 时间)之间的毫秒数。
日期格式化方法:
常用获取时间的方法:
getTime(),valueOf(): 获取日期毫秒数;
getFullYear(): 获取4位数年份;
getMonth(): 获取月份;
getDate(): 获取月份中的天数;
getDay(): 获取星期几;
getHours(): 获取小时数;
getMinutes(): 获取分钟数;
getSeconds(): 获取秒数;
5.RegExp类型
*实例属性:*global, ignoreCase, lastIndex, multiline, source。
实例方法:
a.exec()
var text = "cat bat sat fat"; var pattern = /.at/gi; var mattch = pattern.exec(text); console.log(mattch); //lastIndex 下一个匹配项字符的位置 console.log('lastIndex:'+pattern.lastIndex); var mattch1 = pattern.exec(text); console.log(mattch1); console.log('lastIndex:'+pattern.lastIndex); var text = "mom and dad and boby"; var pattern = /mom( and dad( and boby)?)?/gi; var mattch = pattern.exec(text); console.log(mattch);
test(): 返回是否匹配的布尔值。
var text = "mom and dad and boby"; var pattern = /mom( and dad( and boby)?)?/; console.log('testResult-1:'+ (pattern.test(text))); console.log('patternLastIndex-1:'+pattern.lastIndex); console.log('testResult-2:'+ (pattern.test(text))); console.log('patternLastIndex-2:'+pattern.lastIndex); //g 会循环遍历 var GPattern = /mom( and dad( and boby)?)?/g; console.log('GtestResult-1:'+ (GPattern.test(text))); console.log('GPatternLastIndex-1:'+GPattern.lastIndex); console.log('GtestResult-1:'+ (GPattern.test(text))); console.log('GPatternLastIndex:'+GPattern.lastIndex);
局限性:
6.Function类型
每个函数都是function类型的实例。函数是对象,因此函数名实际也是指向函数对象的指针,不会与某个函数绑定。
函数是对象,函数名是指针。
没有重载。
a. 创建方式:
a1. 函数声明
解析器会率先读取函数声明,而函数表达式是在执行到对应行时再执行。
function sum(a, b){ return a+b;}
a2. 函数表达式
var sum = function(a, b){ return a+b;}
b. 函数内部属性
arguments : 保存函数参数。
arguments.callee : 指针,指向这个arguments对象的函数。(常用于阶乘递归调用,在严格模式下报错)
this : 当网页全局调用时,this对象引用就是window对象。
caller : 保存当前函数的引用。若在全局作用域中调用,则返回null。
function outer(){ inner();}function inner(){ console.log("arguments.callee:"); console.log(arguments.callee.caller); console.log("arguments.callee.caller:"); console.log(arguments.callee.caller);}//调用outer();
参考资料:
http://www.jb51.net/article/65911.htm
《JavaScript高级程序设计》
http://www.codesec.net/view/164723.html
- 5. 引用类型学习笔记
- js学习笔记-引用类型
- 《js高级程序设计》学习笔记--5.引用类型
- c#学习笔记(三) 字符串 引用类型
- 学习笔记:引用类型的初始化
- Java学习笔记之引用类型
- C#学习笔记 2 初识引用类型
- C#学习笔记: 值类型和引用类型
- C#学习笔记 —— 值类型和引用类型
- c#学习笔记:C#值类型和引用类型区别
- c# 学习笔记一 值类型和引用类型
- 值类型和引用类型的学习笔记
- JavaScript学习笔记——基本类型和引用类型
- JavaScript学习笔记——引用类型:Array类型
- js学习笔记:基本类型和引用类型
- golang学习笔记之引用类型与值类型
- C#学习笔记 3 值类型与引用类型
- C#学习笔记—值类型与引用类型
- 原生style 与 jquery 获取修改元素总结
- dos网络配置命令,从新获取ip刷新dns
- 两年多工作心得和体会
- Runtime的几点用法总结
- [039]文本去重、过滤——文本指纹
- 5. 引用类型学习笔记
- linux定时备份MySQL数据库并删除七天前的备份文件
- sql server 中用 convert 函数转换日期格式
- sdutoj3363 数据结构实验之图论七:驴友计划 (暴力最短路+限制条件)
- 4.Linux系统虚拟机—安装VMware Tools步骤(原创)
- ADB LOGCAT Usage
- android长截屏beta1
- Android进阶之事件拦截处理机制
- 配置Hibernate4,Spring和Hibernate版本兼容问题