JavaScript的引用数据类型你了解多少

目录
  • 三种传递
  • 1、Object
    • 1、创建对象语法
    • 2、普通对象在内存中的存储方式
  • 2、Array
    • 1、创建数组语法
    • 2、数组的在内存中的存储方式
    • 3、数组常用方法
      • 1、 concat:用于拼接为新数组
      • 2、 join():用于连接数组的每个元素成为字符串
      • 3、 reverse:翻转数组顺序
      • 4、 indexOf:查找某个元素在数组中首次出现的索引位置,找不到就是返回-1
      • 5、 lastIndexOf:查找某个元素在数组中尾次出现的索引位置,找不到就返回-1
      • 6、 sort正序排列
      • 7、 sort倒序排列
      • 8、 判断一个值是否是数组
      • 9、 把伪数组转换为真数组 Array.from(伪数组)
      • 10、forEach遍历数组
      • 11、find:用于查找首次出现的满足条件的值,并返回
      • 12、findIndex:用于查找首次出现的满足条件的值,并返回期所在索引值 没有则返回-1
      • 13、some:用于查找如果有一个满足条件返回true
      • 14、every:用于查找满足条件的元素,如果都满足返回true,否则就是false
      • 15、filter:筛选数组把满足条件的元素放到新数组返回
      • 16、map:遍历数组让每个元素执行一边回调函数,把所有结果放到新数组返回
  • 3、RegExp正则
    • 1、创建语法
  • 总结

三种传递

  • 数据传递:变量传递给另外一个变量
  • 值传递:会把数据复制一份传递,(简单类型
  • 引用传递:会把数据地址复制一份传递,(引用类型)

1、Object

【解释】: Object 是内置的构造函数,用于创建普通对象。

1、创建对象语法

字面量创建对象示例

let obj = {
			uname : '阿飞',
			age : 22,
			sex : '男'
		}

构造函数创建

// Object:创建普通对象的构造函数
let obj = new Object( {uname : '阿飞', age : 22, sex : '男'} );

对象所有键的获取

let re = Object.keys(obj)

对象所有值的获取

let re = Object.values(obj);

2、普通对象在内存中的存储方式

普通对象数据保存在堆内存之中,栈内存中保存了普通对象在堆内存的地址。

普能对象在赋值时只是复制了栈内中的地址,而非堆内存中的数据 [普通对象赋值后,无论修改哪个变量另一个对象的数据值也会相当发生改变。]

【小结】:

  1. 推荐使用字面量方式声明对象,而不是 Object 构造函数
  2. Object.assign 静态方法创建新的对象
  3. Object.keys 静态方法获取对象中所有属性
  4. Object.values 表态方法获取对象中所有属性值

【堆与栈的区别】:

  • 堆和栈是内存中的数据存储空间
  • 简单类型的数据保存在内存的栈空间中
  • 引用类型的数据保存在内存的堆空间中,栈内存中存取的是引用类型的地址(房间号)

2、Array

1、创建数组语法

字面量

let arr = [1, 2, 3];

构造函数

let ary = new Array(1, 2, 3);

2、数组的在内存中的存储方式

数组在内存中的存储方式与普通对象一样

数组在赋值时只是复制了栈内中的地址,而非堆内存中的数据

3、数组常用方法

1、 concat:用于拼接为新数组

		let arr = [1, 2, 3];
		let ary1 = ['a', 'b', 'c', 'd'];
		let ary2 = [11, 222, 333];
		let reArr = arr.concat(ary1, ary2, '张飞', '关羽', '赵云');
		console.log(reArr);

2、 join():用于连接数组的每个元素成为字符串

		let arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
		let str = arr1.join('');
		console.log(str);

3、 reverse:翻转数组顺序

		let arr3 = [1, 2, 3];
		let re = arr.reverse();
		console.log(re);

4、 indexOf:查找某个元素在数组中首次出现的索引位置,找不到就是返回-1

        let arr1 = ['a', 'b', 'c', 'd', 'a', 'b', 'f'];
		let re1 = arr1.indexOf('a');
		console.log(re1);

5、 lastIndexOf:查找某个元素在数组中尾次出现的索引位置,找不到就返回-1

		let re2 = arr1.lastIndexOf('b');
		console.log(re2);

6、 sort正序排列

		let arr2 = [3, 16, 22, 66, 123, 99];

		// sort正序排列:
		let re3 = arr2.sort(function (a, b) {
			return a - b;
		});

7、 sort倒序排列

		// sort倒序排列
		let arr2 = [3, 16, 22, 66, 123, 99];
		let re4 = arr2.sort(function (a, b) {
			return b - a;
		});

8、 判断一个值是否是数组

		let a = [1, 2, 3];
		let re = Array.isArray(a);
		console.log(re);

9、 把伪数组转换为真数组 Array.from(伪数组)

// 特别注意:要想把伪数组转换为真数组必须有length属性
		let o = {
			0 : 'a',
			1 : 'b',
			2 : 'c',
			3 : 'd',
			4 : 'e',
			5 : 'f',
			6 : 'h',
			length : 4,
		}

		let ary = Array.from(o);

		console.log( ary );

10、forEach遍历数组

		let arr = [
					{uname :'阿飞', age : 22, sex : '男'},
					{uname :'张三丰', age : 23, sex : '男'},
					{uname :'李寻欢', age : 21, sex : '男'},
					{uname :'张三丰1', age : 23, sex : '男'},
					{uname :'李寻欢1', age : 21, sex : '男'},
					{uname :'张三丰2', age : 23, sex : '男'},
					{uname :'李寻欢2', age : 21, sex : '男'},
					{uname :'张三丰2', age : 23, sex : '男'},
					{uname :'李寻欢2', age : 21, sex : '男'},
				];
		arr.forEach( item => {
			console.log(`姓名:${item.uname},年龄${item.age},性别${item.sex}`);
		} );

11、find:用于查找首次出现的满足条件的值,并返回

		let re = [2, 6, 4, 7, 9, 3];
		let result = re.find(function (item, index, o) {
			return item > 5;
		})
		console.log(result);

12、findIndex:用于查找首次出现的满足条件的值,并返回期所在索引值 没有则返回-1

		let result1 = re.findIndex(function (item, index, o) {
			return item > 40;
		});
		console.log(result1);

13、some:用于查找如果有一个满足条件返回true

		let result2 = re.some(function (item, index, o) {
			return item > 5;
		})
		console.log(result2);

14、every:用于查找满足条件的元素,如果都满足返回true,否则就是false

		let result3 = re.every(function (item, index, o) {
			return item > 5;
		});
		console.log(result3);

15、filter:筛选数组把满足条件的元素放到新数组返回

		let result4 = re.filter(function (item, index, o) {
			return item > 5;
		});
		console.log(result4);

16、map:遍历数组让每个元素执行一边回调函数,把所有结果放到新数组返回

		let result5 = re.map(function (item, index, o) {

			return item * item;

		});
		console.log(result5);

3、RegExp正则

1、创建语法

字面量

let reg = /abc/;

构造函数

let reg1 = new RegExp(/abc/);

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析

    本文实例讲述了JS数据类型(基本数据类型.引用数据类型)及堆和栈的区别.分享给大家供大家参考,具体如下: js数据类型:基本数据类型和引用数据类型(文章最下面会介绍各类型的基础以及注意事项) 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象 当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值 基本数据类型:数字(Number).字符串(String).布尔(Boolean).空(Null).未定义(Undefined) 引用数据类型:也就是对

  • 浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题

    js 深浅拷贝问题 浅拷贝一般指的是基本类型的复制 深拷贝一般指引用类型的拷贝,把引用类型的值也拷贝出来 举例 h5的sessionStorage只能存放字符串,所以要存储json时就要把json使用JSON.stringify()把json转换成string,然后再用JSON.parse()转换成json数据 缺点:JSON.parse和JSON.stringify只支持IE9+以上 解决这个问题可以使用深度比那里拷贝方法 js 中内存分配问题(堆和栈) js中基本类型类型一般是存储在栈中的.

  • JavaScript数据类型之基本类型和引用类型的值

    ECMAScript变量包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值是简单的数据段,而引用类型值指那些可能由多个值构成的对象. 在将一个值赋给变量时,解析器必须确定这个值是基本类型还是引用类型.基本类型包括如Undefined.Null.Boolean.Number和String,这5种基本类型数据类型是按值访问的,因此可以操作保存在变量中的实际的值:引用类型类型的值是保存在内存中的对象.与其他语言不同,JavaScript不允许直接访问内存中的位置,也就是说不能直接操作对象的内

  • JavaScript基本数据类型及值类型和引用类型

    在JavaScript中四种基本的数据类型:数值(整数和实数).字符串型(用""号或''括起来的字符或数值).布尔型(使True或False表示)和空值.在JavaScript的基本类型中的数据可以是常量,也可以变量.由于JavaScript采用弱类型的形式,因而一个数据的变量或常量不必首先作声明,而是在使用或赋值时确定其数据的类型的.当然也可以先声明该数据的类型,它是通过在赋值时自动说明其数据类型的. javascript中的变量 javascript中的变量只是一个占位符,前言已经

  • JS中的两种数据类型及实现引用类型的深拷贝的方法

    一.前言 我们知道,在JS中数据类型按照访问方式和存储方式的不同可分为基本类型和引用类型. 基本类型 基本类型有String.Boolean.Number,Undefined.Null,这些基本类型都是按值传递的,也称为值类型. 引用类型 引用类型有对象.数组.函数,它们都是按引用访问的. 二.存储方式区别 基本类型和引用类型由于两者在内存中存储的方式不同,造成两者访问的方式也不同.其中,基本类型存储在内存的栈中,是按值访问:引用类型存储在内存的堆中,是按引用访问.可如下图所示: 当有 var

  • JavaScript的引用数据类型你了解多少

    目录 三种传递 1.Object 1.创建对象语法 2.普通对象在内存中的存储方式 2.Array 1.创建数组语法 2.数组的在内存中的存储方式 3.数组常用方法 1. concat:用于拼接为新数组 2. join():用于连接数组的每个元素成为字符串 3. reverse:翻转数组顺序 4. indexOf:查找某个元素在数组中首次出现的索引位置,找不到就是返回-1 5. lastIndexOf:查找某个元素在数组中尾次出现的索引位置,找不到就返回-1 6. sort正序排列 7. sor

  • 深入探讨javascript中的数据类型

    学一门编程语言,无非两方面:一是语法,二是数据类型.类C语言的语法不外乎if.while.for.函数.算术运算等,面向对象的语言再加上object. 语法只是语言设计者预先做的一套规则,不同语言语法不尽相同,但都有一些共通点,对于熟悉一两门编程语言的人,学其他的编程语言时,语法往往不是问题(当然,如果你一直学的是类C语言,那么首次接触lisp时肯定也要花些时间),学习的重点往往是数据类型及其相关操作上,不是有句老话:"数据结构+算法=程序"!其次,有些语言的语法本身就存在设计问题(j

  • 详解javascript中原始数据类型Null和Undefined

    当讨论JavaScript中的原始数据类型时,大多数人都知道的基本知识,从String,Number到Boolean.这些原始类型相当简单,行为符合常识.但是,本文将更多聚焦独特的原始数据类型Null和Undefined,是什么让他们如此相似,却又似是而非. 一.理解Null和Undefined 在JavaScript中,null是字面量同时也是语言中的关键字,用来表示无法识别的对象值.换句话说,这用来表示"无值(no value)".虽然相似,undefined实际上代表了不存在的值

  • JavaScript基础心法 数据类型

    由于自己是野生程序员,在刚开始学习程序设计的时候没有在意内存这些基础知识,导致后来在提到"什么什么是存在栈中的,栈中只是存了一个引用"这样的话时总是一脸懵逼.. 后来渐渐的了解了一些内存的知识,这部分还是非常有必要了解的. 基本数据结构 栈 栈,只允许在一段进行插入或者删除操作的线性表,是一种先进后出的数据结构. 堆 堆是基于散列算法的数据结构. 队列 队列是一种先进先出(FIFO)的数据结构. JavaScript中数据类型的存储 JavaScript中将数据类型分为基本数据类型和引

  • 详解JavaScript中的数据类型,以及检测数据类型的方法

    一.js中的数据类型有哪些? 在js中,基本数据类型有五种,分别是 string.number.boolean.null.undefined,不过在ES6中新增加的了一种基本数据类型Symbol(表示独一无二的值),其作用主要是从根本上防止属性名的冲突而设定的. 除了基本数据类型之外,还有引用数据类型object,也有人称之为复杂数据类型,包含了我们常见的Array.Object.Function等. 所以现在js中的数据类型共有七种. PS: Symbol数据类型通过Symbol函数生成.也就

  • JavaScript中检测数据类型的四种方法

    目录 1. typeof 2. instanceof 3. constructor(构造函数) 4. Object.prototype.toString.call() 前言:在介绍检测数据类型的方法之前,先说说JavaScript中数据类型有哪些吧~ JS数据类型主要分为两大类:基本数据类型和引用数据类型 基本数据类型:number.string.boolean.null.undefined.symbol(es6)引用数据类型:object(array.function.date...) 数据类

  • JavaScript中的数据类型介绍

    一.基本数据类型(原始值类型) 基本类型:字符串(String).数字(Number).布尔(Boolean).对空(Null).未定义(Undefined).Symbol. 基本类型的变量是存放在栈内存(Stack)里,栈内存中保存了变量标识符和指向堆内存中该对象的指针. 注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值. JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型: var x; // x 为 undefined var x = 5; /

  • JavaScript详细分析数据类型和运算符

    目录 一.js中的数据类型 1.数值型 2.字符串型 3.逻辑(布尔)型 4.空(null)值 5.未定义(undefined) 6.复合数据类型Object 二.JavaScript中的运算符 1.算数运算符 2.赋值运算符 3.比较运算符 4.逻辑运算符 一.js中的数据类型 1.JS是弱类型的脚本语言,所有的变量对象的数据类型的声明都是var . 2.变量声明时没有确定具体的数据类型,在变量赋值时确定变量具体的数据类型. 五种基本的数据类型 1.数值型 number整数和浮点数统称为数值.

  • JavaScript知识点总结(六)之JavaScript判断变量数据类型

    最近做了一个项目,其中有关于js判断数据类型的处理,在网上搜了相关资料,并且亲自测试了各种数据类型的判断,绝对安全.下面小编把具体内容总结分享给大家,大家参考下! 一.JS中的数据类型 1.数值型(Number):包括整数.浮点数. 2.布尔型(Boolean) 3.字符串型(String) 4.对象(Object) 5.数组(Array) 6.空值(Null) 7.未定义(Undefined) 二.判断一个变量的数据类型 1.数值型(number) 比较常用的判断方法是: function i

随机推荐