第五章 引用类型
5.1 Object 类型
-
-
var person = new object();
-
var person = {};
-
var person = { name**:joy,age:18 }; // 最后一个属性不用加,**
-
访问属性一般使用点表示法,但还有方括号语法
-
- person[“name”];
- var xName = “name” ; person[xName];
- person[“first name”] 如果属性名包括空格或其它点表示法不能表示的字符,可以使用方括号表示法;
-
5.2 Array 类型
-
-
可以利用 length 添加最后一项,因为最后一项(未添加前)是 length-1。
-
检测数组 Array.isArray(数组名);
-
转换方法
-
- valueOf()直接传递数组;
- toString() 拼接成字符串,用“,”分开;
- toLocaleString() 与 toString 相似,会根据本地环境改变,如时间等;
-
join() 更改分隔符;
-
栈方法
-
- push() 可添加多个参数,添加到末尾,返回修改后数组长度;
- pop() 移除最后一项,返回移除的项;
-
队列方法
-
- shift() 移除第一项,并返回移除项;
- unshift() 可添加多个参数,添加到前端,返回修改后数组长度;
-
reserve() 反转数组顺序 改变原数组
-
sort() 默认 先调用 toString()方法,比较字符串大小
-
- 添加函数 sort(function{}); 负数在前,正数在后,0 相等;
-
concat() 合并数组,返回一个新数组;
-
slice(1,4)提取项 1 是位置,到 4 为止(不包括 4),返回一个新数组; //负数则用 length+上负数;
-
splice() 删除/插入/替换
-
- splice (1,4) 从位置[1]开始 删除 4 项;
- splice(1,0,“a”,”b“) 从位置[1]插入字符串 a,b; // 原先[1]项往后顺延;
- splice (1,1,“a”)从位置[1]开始,删除 1 项(自身),在[1]中插入 a;
-
位置方法
-
- indexOf(“a”,4) 返回 a 的位置,从[4]开始找;
- lastIndexOf(“a”,4) 从后开始查找 ,从[4]开始向前找;;
- 查找不到均返回-1;
-
迭代方法
-
- every() 运行指定函数,都返回 true,则返回 true;
- filter() 返回 true 项组成的数组;
- forEach() 每一项都运行指定函数,无返回;
- map() 返回 返回结果组成的数组;
- some() 有一项返回 true,即返回 true;
-
归并方法
-
- reduce() 该方法函数接收四个参数:前一个值,当前值,项的索引,数组;
- reduceright() 方向相反;
-
5.3 Data 类型
-
-
var now = new Date();
-
- Date.parse() 根据字符串返回相应毫秒数。字符串直接写入 Date()会自动调用;
- Date.UTC() 也返回毫秒数, 年,月(0-11),日,小时数(0-23),分钟数,秒数 (只有年月必须),同样可以自动调用;
-
Date.now() 返回当前时间毫秒数;
-
toString 和···Locale··都会返回日期时间,根据浏览器不同;
-
valueOf 返回毫秒数;
-
日期格式化方法:
-
- toDateSrting()———–以特定于实现的格式显示星期几、月、日、年
- toTimeString()———–以特定于实现的格式显示时、分、秒、时区
- toLocalDateString()—–以特定于地区的格式显示星期几、月、日、年
- toLocalTimeString()—–以特定于实现的格式显示时、分、秒
- toUTCString()————以特定于实现的格式显示完整的 UTC 日期
-
-
5.4RegExp 类型
-
-
-
正则表达式创建
-
-
Perl var exp = / aaa / gi
-
RegExp 类型 var exp = new RegExp(“aaa”,“gi”); 推荐
-
- 需要双重转义 如/需要表达写为////
-
-
实例属性
-
- exp.global 是否设置了 g 标志 返回 true 或 false;
- exp.ignoreCase i 标志
- .lastIndex 搜索下一个匹配项字符的位置 //0 开始
- .multiline m 标志
- ,source 返回字面量的字符串
-
实例方法
-
-
var matches = exp.exec(字符串) 返回一个数组 为捕获组设计
-
- index 匹配字符串的位置
- input 捕获到的字符串
- matches[0] 返回第一个匹配项 // 后面()内为匹配项
- 每执行一次 exec()方法 lastindex 都会增加
- 不添加全局标志(g),找到第一个后就会停止。
-
var matches = exp.test(字符串)返回布尔值 匹配则返回 true
-
toString toLocaleString 返回字面量 valueOf 返回正则表达式本身 相同
-
-
构造函数属性
长属性名 短属性名 说明 input $_ 最近一次要匹配的字符串 lastMath $& 最近匹配到的项 lastParen $+ 最近一次的捕获组 multiline $* 是否使用多行表达式 leftContext $`(~的正常) 匹配项前的文本 rightContext $' 匹配项后的文本 $1-$9 捕获组 1-9
-
-
-
5.5 Function 类型
-
-
-
函数实际是对象,每个函数都是 function 类型的实例,而且都具有属性和方法,所以函数名实际上也是一个指向函数对象的指针。
-
定义函数的方式
-
- function sum() {}; // 函数声明
- var sum = function(){}; //函数表达式
- var sum = new function(“”,“”,“”); 最后一项字符串会被看作是函数体,其余都是参数; 不推荐这种写法,用于理解。
-
因为函数也是对象,所以函数名只是指针,所以可以 var sum2 = sum;当函数名不加()时,访问的时函数指针,所以此时也可以使用 sum2();
-
因为函数名是指针,所以没有重载。
-
函数声明会被解析器提升,js 引起第一遍会声明函数并放到顶部,所以函数可以放下面,但函数表达式则不会;
-
函数可以作为值传递 function haha(){}; function xixi(haha){};
-
函数内部属性,arguments.callee 指向当前函数指针 不建议使用
-
this 引用的是函数执行的环境对象 (this.name) //o.this.name
-
arguments.callee.caller 指向调用它的函数
-
函数 length 表示函数希望接收的命名函数个数;
-
prototype 函数包含所有实例方法
-
apply()和 call() 第一个参数都是作用域,第二个参数是传入参数,apply 可传入数组对象或数组,call 则是单独列举参数。
-
bind(“this 值”),返回原函数的拷贝,并且可指定 this 值(对象);
-
-
5.6 基本包装类型
-
- boolean,number,string 都有各自的基本包装类型(对象),在调用方法时:
-
var a = ‘hahha’;
-
var b = a.substring(2); 按我们的理解,a 是 string 类型,没有对象,没有方法和属性,但实际执行时可以想象成 (但 a 的原内容还在,为什么?)
-
var a = new String(“hahha”);
-
var b=a.substring(2);
-
a = null;
-
自动创建的基本包装类型与 new 引用类型不同的是生存期,基本包装类型的实例只存在于执行代码的瞬间,随便立即被销毁;
-
a.color = “red”;
-
alert(a.color);
-
该例子中,就会出现 undefined,因为执行完后就立即销毁了。
-
-
引用类型 Boolean Number String; var a = new String(“hahha”); // 使用 new 调用构造函数传入值
-
基本类型和引用类型的值有很大区别,引用类型 typeof 会返回 object,instanceOf 则会返回 true (确定是对象),其中三者都会重写 toString,valueOf , toLocaleString 方法,String 对象均返回字符串,其余 valueOf 会返回基本类型,String 则会返回字符串;
-
永远不建议使用 Boolean 对象,不建议使用 Numbber 对象;
-
number 类型
-
- toFixed(2) 保留几位小数
- toExponential() e 表示法(指数表示法)
- toPrecision() 用几位数表示
-
String 类型
-
- charAt() charCodeAt()返回字符编码 直接 a[2] a 是字符串 返回位置 2 的字符
- concat() 连接 用+也行
- slice() substring() substr() 第一个参数都是开始位置 第二个参数是结束位置(不包括该位置) substr 第二是长度 负数下三者均不同;
- indexOf() lastIndexOf() 返回某个字符位置 正反搜索
- toLowerCase() toLocaleLowerCase()小写 toUpperCase() toLocaleUpperCase() 大写
-
- 正则表达相关
-
- localeCompare() 字符串对比,按首字母大小对比,大于被对比返回整数,小于负数,等于 0
- fromCharCode() 输入字符编码返回字符串;
-
HTML 方法 不建议使用
-
5.7 单体内置对象
-
-
单体内置对象指不用实例化,可以直接调用其方法的对象;object array 属于内置对象
-
Global 对象
-
-
uri 编码
-
- encodeURI()不会对本身 URI 特殊字符进行编码 如冒号斜杠,对空格会编码
- encodeURIComponent() 会对任何非标准字符进行编码
- decodeURI() 相反
- decodeURIComponent() 相反
-
eval()方法 输入字符串即当作代码执行
-
属性
-
window 对象 全局作用域声明的变量和函数,都成为 window 对象的属性。
-
-
Math 对象
-
- Math.min/max() 确定数组中的最大和最小
- Math.ceil()向上舍入 Math.floor() 向下 Math.round() 四舍五入
- Math.random() 随机 0-1;
-