《JavaScript高级程序设计》第5章 引用类型
5.2.2 转换方法
所有对象都有toString()和valueOf()方法
调用数组的toString()方法,会返回一个字符串,由数组中的每个项通过逗号连接而成
调用valueOf()还是返回数组
var colors = ["red", "blue", "green"];
console.log(colors.toString()); // red,blue,green
console.log(colors.valueOf()); // ["red", "blue", "green"]
join()方法接收一个参数,是用作分隔符的字符串,返回包含用这个分隔符连接而成的字符串,如果不传入参数,则默认使用逗号。
console.log(colors.join("||")); // red||blue||green
以上所有方法,如果数组中某个项是undefined或者null,则处理的时候以空字符串表示
5.2.3 栈方法
// push:向数组尾部添加元素。pop:移除数组尾部最后一项
var colors = [];
colors.push("red", "green"); // ["red", "green"]
5.2.4 队列方法
// shift:移出数组头部第一项。unshift:向数组头部添加元素
var colors = [];
colors.unshift("red", "green"); // ["red", "green"],无论是push还是unshift,添加多个元素时顺序始终保持一致
5.2.5 重排序方法
var values = [1, 30, 4, 22, 100, 21, 22];
// 如果 compareFunction(a, b)小于0 ,那么a会被排列到b之前;
function compare (value1, value2) {
return value1 - value2; // 数组升序排列
}
values.sort(compare);
5.2.6~5.2.8 操作方法、位置方法、迭代方法
操作方法 concat() slice() splice()
位置方法 indexOf() lastIndexOf()
迭代方法 every() some() filter() map() forEach()
5.5.2 函数声明与函数表达式
解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);
至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。
console.log(sum(10, 10)); // 20,正常运行
function sum (num1, num2) {
return num1 + num2;
} console.log(anotherSum(10, 10)); // 报错,Uncaught TypeError: anotherSum is not a function
var anotherSum = function (num1, num2) {
return num1 + num2;
}
5.5.4 函数内部属性 callee和caller
// callee:arguments对象的属性,指向拥有这个arguments对象的函数
function factorial (num) {
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num - 1);
// 相当于 return num * factorial(num - 1);
}
} // caller:函数对象的属性,指向调用当前函数的函数的引用
function outer () {
inner();
}
function inner () {
console.log(inner.caller); // outer函数的源代码,因为outer调用了inner
}
outer();
5.5.5 函数属性和方法
call、apply:函数对象的方法,用于改变函数体内this的值,同时调用它
call传入的是多个参数。
apply传入的是一个参数数组。
function sum (num1, num2) {
return num1 + num2;
}
var num1 = 10;
var num2 = 20;
var nums = [10, 20];
console.log(sum.call(this, num1, num2)); // 传入多个参数
console.log(sum.apply(this, nums)); // 传入一个数组
bind:函数对象的方法,返回一个函数(用于赋值而非调用,区别于call和apply),这个函数改变了函数体内this的值
window.color = "red";
var o = {color: "blue"};
function sayColor () {
console.log(this.color);
}
sayColor.call(this); // red
sayColor.call(o); // blue
var objectSayColor = sayColor.bind(o);
objectSayColor(); // blue
5.6 基本包装类型
在声明基本数据类型的时候,实际上是创建了一个基本包装类型的对象的实例,使其有相应的方法可以被调用
5.6.3 String类型
trim方法:删除前置和后缀的所有空格
match方法:返回一个数组,第一项是与整个模式匹配的字符串,之后的每项保存与正则表达式匹配的字符串
replace方法:替换,如果要替换所有字符串,需要提供正则表达式,指定全局标志
5.7 单体内置对象
5.7.1 Global对象
所有全局作用域中定义的属性和函数,都是Global对象的属性,例如isNaN() parseInt()
大多数ECMAScript实现中都不能直接访问Global对象,不过Web浏览器实现了承担该角色的window对象
uri方法:encodeURI() encodeURIComponent() decodeURI() decodeURIComponent()
5.7.2 Math对象
var max = Math.max(3, 54, 32, 16); // 找最大值
var values = [1, 2, 3, 4, 5, 6];
var max = Math.max.apply(Math, values); // 找数组中的最大值,将Math对象作为apply的第一个参数从而正确设置this值 // Math.ceil() 向上取整
// Math.floor() 向下取整
// Math.round() 四舍五入
var num = Math.floor(Math.random() * 10 + 1); // 随机得到一个1到10之间的数 function selectFrom(lowerValue, upperValue) {
var count = upperValue - lowerValue + 1;
return Math.floor(Math.random() * count) + lowerValue;
}
var num = selectFrom(2, 10); // 随机得到一个2到10之间的数
《JavaScript高级程序设计》第5章 引用类型的更多相关文章
- JavaScript 高级程序设计 第5章引用类型 笔记
第五章 引用类型 一.object类型 1.创建方法: 1.使用new 操作符创建 var person=new object() Person.name=”Nicholasa” Porson.age ...
- 《JavaScript高级程序设计》——第二章在HTML使用JavaScript
这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...
- JavaScript高级程序设计学习(四)之引用类型
在javascript中也是有引用类型的,java同样如此. javascript常见也比较常用的引用类型就熟Object和Array. 一个对象和一个数组,这个在前后端分离开发中也用的最多.比如aj ...
- javascript高级程序设计第5章,引用类型
object类型: 创建object实列的方式有两种,一种是new()方法,一种是对象字面量表示法: 第一种法方: var obj = new object(); obj.name = 'name' ...
- JavaScript高级程序设计学习(四)之引用类型(续)
一.Date类型 其实引用类型和相关的操作方法,远远不止昨天的所说的那些,还有一部分今天继续补充. 在java中日期Date,它所属的包有sql包,也有util包.我个人比较喜欢用util包的.理由, ...
- javascript高级程序设计第四章 变量、作用域和内存问题
变量包含两种,,基本类型和引用类型 基本类型是指一些简单的字段: 引用类型是☞由多个值构成的对象 引用类型的值是保存在内存中的对象,在javascript中是不允许直接访问内存中的位置; 函数的参数 ...
- JavaScript高级程序设计第20章JSON 笔记 (学习笔记)
第二十章 JSON 1.Json 可以表示三种类型的值: 1.简单值: 表示数值:5 表示字符串:“hello wrold”注表示字符串时必须使用双引号 2.对象: {“name”:“mi”,”ag ...
- JavaScript高级程序设计第14章表单脚本 (学习笔记)
第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有 ...
- 《JAVASCRIPT高级程序设计》第一章
在使用调制解调器的时代,频繁的表单验证对客户端来说是一个很大的负担,javascript,作为一种专门进行表单验证的客户端脚本语言诞生了.到今天,javascript早已超越了当初设定的角色.Java ...
- 《JavaScript高级程序设计》笔记:引用类型(五)
Object类型 创建object实例方法有两种.第一种方法使用new操作符后跟object构造函数.如下: var person=new Object(); person.name="Ni ...
随机推荐
- c#中执行多条sql语句【ORA-00911: 无效字符】
问题描述: 在plsql里执行多条sql语句的时候,使用“,”(逗号)分隔,测试可以执行多条,而在C#执行多条sql语句的时候[ORA-00911: 无效字符]. 有时我们需要一次性执行多条sql语句 ...
- sql server 查询表信息
SELECT '表名' = e.[name], '表说明' = f.[value], '字段序号' = a.colorder, '字段名' = a.[name], '字段类型' = b.[name], ...
- jQuery基础知识— 获得内容和属性
jQuery拥有可操作HTML元素和属性的方法. 获得内容: text()--设置或返回所选元素的文本内容 html()--设置或返回所选元素的内容(包括HTML标记) val()--设置或返回表单字 ...
- Java 装箱 拆箱
Java 自动装箱与拆箱 ??什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象的时候,我 ...
- Linux之uboot分析与移植20160601
说一下uboot分析与移植: 1.下载.建立source insight工程.编译.烧写.如果无运行分析原因 tar xjf u-boot-2012.04.01.tar.bz2 cd u-boot-2 ...
- python2.7爬取豆瓣电影top250并写入到TXT,Excel,MySQL数据库
python2.7爬取豆瓣电影top250并分别写入到TXT,Excel,MySQL数据库 1.任务 爬取豆瓣电影top250 以txt文件保存 以Excel文档保存 将数据录入数据库 2.分析 电影 ...
- acdream 1738 世风日下的哗啦啦族I
原题链接:http://acdream.info/problem?pid=1738 树套树裸题,如下: #include<algorithm> #include<iostream&g ...
- Python: 函数参数小结
参数的类型: 函数的参数有2种类型: 1. 函数定义时用于接收值的形式参数Parameters. 2. 函数调用时用于传递值的实际参数Arguments. 参数的传递: 传递方式有2种: 1. 值传递 ...
- golang:interface{}类型测试
在golang中空的interface即interface{}可以看作任意类型, 即C中的void *. 对interface{}进行类型测试有2种语法: 1. Comma-ok断言: value, ...
- golang的goroutine与channel
Golang的goroutine是非抢占式的, 令人相当蛋疼! 有痛不能呻吟...只能配合channel在各goroutine之间传递信号来实现抢占式, 而这形成了golang最灵活与最具性能的核心. ...