第五章:引用类型(一)-Object和Array
引用类型
引用类型的值(对象)是引用类型的一个实例
引用类型是一种数据结构,用于将数据与功能组织在一起
也常被称为类, Object
对象的两种创建方式
使用new操作符
对象字面量表示法 Array
数组的length不是只读的,还可设置,没有被赋值的地方为undefined
检测是否为数组
console.log([] instanceof Object);//检测对象的数据类型
console.log([].constructor.name);//Array
console.log(Array.isArray([])) //true !(function () {
var people1 = {
toLocaleString(){
return 'people1.1'
},
toString(){
return 'people1.2'
}
}
var people2
= {
toLocaleString(){
return 'people21'
},
toString(){
return 'people22'
}
} var people=[people1,people2];
console.log(people);
alert(people);//people1.2,people22
alert(people.toLocaleString());//people1.1,people21 })()
!(function () {
/*栈方法(栈的插入(推入)与删除(弹出)只发生在一个位置(栈的顶部))*/
/*push()推入 pop()弹出*/
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(arr.push(0, 1, 5, 77)); //尾部增加 返回值为数组长度
console.log(arr);
console.log(arr.pop());//尾部删除 返回值是删除的内容
console.log(arr);
})() !(function () {
/*队列方法*/
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(arr.shift());//数组中移除第一项 返回值是移除的数组
console.log(arr);
console.log(arr.unshift(1, 1, 1)); //返回值为数组的长度 前面添加元素
console.log(arr)
})() !(function () {
/*重排序*/
var arr = [1, 9, 99, 4, 44, 6, 66, 5, 9];
// reverse() 翻转数组
console.log(arr.reverse());//返回值为翻转之后的数组
console.log(arr);
console.log(arr.sort());//会根据数字首数字大小排序,小到大,
console.log(arr.sort(function (a, b) {
return a - b;//正序
}));
console.log(arr.sort(function (a, b) {
return -(a - b)//倒序
})) })(); !(function () {
console.log('操作方法');
/*操作方法*/
//操作包含在数组中的项
var arr = [1, 2, 3];
console.log(arr);
/*concat()会创建当前数组的一个副本然后将接受到的参数天津爱到这个副本的末尾最后但是重新构建的数组*/
console.log(arr.concat(11, 22, 33, [444, 555], {name: 'hxq'})); //返回值为改变之后的数组 因为赋值了一个对象副本,所以不改变原数组
//可添加多个参数,数组会直接加入其中每个元素,但是对象就是添加对象 (9) [1, 2, 3, 11, 22, 33, 444, 555, {…}];
console.log(arr);//[1, 2, 3] /*slice()
* 基于当前数组的一个或者多个项(不会改变原数据)
**/
console.log(arr.slice(1, 2));//数组的截取 从第一位到第二位
console.log(arr); //[1, 2, 3]
console.log(arr.slice(-3, -1));//从倒着数第三位到倒着数第一位截取 ,
//如果参数一大于参数二 则返回的是空数组 /*splice()*/
//一个强大的方法有很多用法
/*
* 一个参数:从参数一节渠道最后一位;
* 两个参数:从参数一往后截取参数二位,
* 三个参数或更多:参数一往后就去参数二位,将后面的元素替换掉截取的部分
* */
console.log('splice');
var arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(arr1.splice(2, 4));//[3, 4, 5, 6] (从第二位开始往后截取四位)
console.log(arr1);//[1, 2, 7, 8, 9] (原数组会受到改变)
console.log(arr1.splice(1));
console.log(arr1);
var arr2 = [1, 2, 3, 4];
console.log(arr2.splice(1, 2, 88, 88, 88));
console.log(arr2); })() !(function () {
// 位置方法
/* indexOf()
* lastIndexOf()
* 用的是=== 做比较
* 参数一:要查找的元素;
* 参数二:从第几个元素开始查找
* */
console.log('位置方法');
var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(arr.indexOf(4, 3));
console.log(arr.lastIndexOf(2)); })() !(function () {
/*数组的迭代方法
* every() ; 数组中所有元素满足迭代条件则为true;
* some() ;数组咋弄有一个元素满足迭代器条件则返回true
* filter() ;返回满足条件得数组;
* forEach() ;遍历操作,本质上与for循环一致
* map() ;遍历操作 返回的数组中每个元素都可以在迭代器中修改
* */
console.log('迭代方法');
var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
var result = arr.every(function (v,k,ele) {
console.log(1);
return v>-2;//必须要有这句 不然不会迭代
})
console.log(result);//数组中每个元素都满足迭代中的条件则为true; result=arr.filter(function (v,k,ele) {
return v>5;
});
console.log(result); })()
!(function () {
/*归并方法
* reduce()
* 参数1:第一次遍历是数组的第一项,然后就是迭代器返回的值
* 参数2:从数组的第二项开始一直往后
* 参数3:参数2的下标
* 参数4:数组本身
* 返回值是最后的返回值
* reduceRight()
* */
console.log('归并');
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; // var result=arr.reduce(function (a,b,c,d) {
//
//// console.log(1);//里面执行的次数是数组的长度-1次
// console.log(a,b,c,d);
// return a+b;
// })
// console.log(result)
var result=arr.reduceRight(function (a,b,c,d) {
//
// console.log(1);//里面执行的次数是数组的长度-1次
console.log(a,b,c,d);
return a+b;
})
console.log(result)
})()
第五章:引用类型(一)-Object和Array的更多相关文章
- 读JS高级——第五章-引用类型 _记录
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JavaScript高级程序设计学习笔记第五章--引用类型(函数部分)
四.Function类型: 1.函数定义的方法: 函数声明:function sum (num1, num2) {return num1 + num2;} 函数表达式:var sum = functi ...
- JAVASCRIPT高程笔记-------第五章 引用类型
一.Object类型 1.1创建方式 ①new关键字 : var person = new Oject(); ②给定直接量: var person = { name : "zhangsan& ...
- 浅析JavaScript引用类型之--Object、Array
1.Object类型 对象是某个特定引用类型的实例,新对象有两种创建方式: i.使用new操作符调用构造函数来创建. var person = new Object(); person.name = ...
- Javascript高级程序设计复习——第五章引用类型 【原创】
5.1 Object类型 1:创建Object实例的两种方式 ①new构造法 var obj1 = new Object(); 注意大写!不传递参数时可以省略圆括号 obj1.hehe = &quo ...
- JavaScript高级程序设计学习笔记第五章--引用类型
一.object类型 1.创建object类型的两种方式: 第一种,使用构造函数 var person = new Object();或者是var person={};/与new Object()等价 ...
- 引用类型(object、array)
1.Object类型 1)创建方法: //使用new加object构造函数 var person = new Object(); person.name = "aaa"; pers ...
- Javascript高级程序设计笔记 <第五章> 引用类型
一.object类型 创建object实例的方式有两种: //第一种使用new操作符跟构造函数 var person= new Object(); person.name="小王" ...
- 小红书第五章——引用类型之function类型
有趣的函数——function类型 函数实际上是对象,每个函数都是function类型的实例,具有属性和方法. 1.函数的定义方法 1)函数声明语法 function sum(num1,num2){/ ...
- 读书笔记 - js高级程序设计 - 第五章 引用类型
引用类型 和 类 不是一个概念 用typeof来检测属性是否存在 typeof args.name == "string" 需要实验 访问属性的方法 .号和[] 一般情况下要 ...
随机推荐
- SpringBoot11 读取properties文件、发送邮件
1 读取properties文件 1.1 ResourceBundle 帮助我们事先国际化 1.1.1 前提 properties文件的命名方式必须体现除语言和国别 例如:test_zh_CN.pro ...
- hibernate第三天 一对多 , 多对多
1.1. 阐述你对inverse的理解 答: 1.inverse的默认值是false,代表不放弃外键维护权,配置值为true,代表放弃了外键的维护权. 2.双方维护外键会多产生update语句,造成浪 ...
- oracle 监听服务OracleOraDb11g_home1TNSListener打开后立马停止错误
首先我真得吐槽一下,我安装这个破软件感觉真的是把能遇到的错误都遇到一遍了,生气!!!!!!! 关于监听服务OracleOraDb11g_home1TNSListener打开后立马停止这个错误,我的解决 ...
- HUST高级软件工程--测试管理工具实践--Day3
测试管理工具实践--Day3 今天完成任务情况: 小靳 今天,大家参加考试,时间比较紧促.庆幸,自己的队伍比较给力,大家都没有拖后腿,深夜还在为自己的任务拼搏,很是激励人心 我今天的工作就是 学会了注 ...
- C++面试笔记--面向对象
说到面向对象,大家第一反应应该就是它的三大特性:封装性.继承性和多态性.那么我们先简单的了解一下这三大特性: (1)封装性:封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的 ...
- GUID介绍
GUID介绍 GUID(Global unique identifier)全局唯一标识符,它是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节的二进制 ...
- C#中的线程池使用(一)
1 线程池的概念 许多应用程序使用多个线程,但这些线程经常在休眠状态中耗费大量的时间来等待事件发生.其他线程可能进入休眠状态,并且仅定期被唤醒以轮询更改或更新状态信息,然后再次进入休眠状态.为了简化 ...
- winform GDI基础(二)画带圆角的矩形框
private void Form1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.SmoothingMode ...
- ubuntu - 14.04,创建菜单
我们有的时候可能会把一个执行程序放到一个位置,随后我们希望在ubuntu的菜单里面加入它,这个操作非常简单: 我在Gnome桌面里,选择:“系统工具”->“首选项”->"主菜单& ...
- bzoj3140: [Hnoi2013]消毒(二分图)
题目描述 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a.b.c 均为正整数.为了实验的方便,它被划分为a*b*c个单位立方体区 ...