博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js 值类型和引用类型
阅读量:4912 次
发布时间:2019-06-11

本文共 1529 字,大约阅读时间需要 5 分钟。

今天来给大家介绍一下数据类型的另一种解读,值类型和引用类型(及简单类型和复合类型)

一、基本概念

  ECMAscript变量包括两种不同的数据类型的值,一种叫做简单类型(值类型),指的是简单的数据段,另一种叫做复合数据类型(引用类型),是由多个值构成的对象。

  在js的数据类型中,number,boolean,string,null和undefined都属于值类型,而函数和对象属于引用类型。

 

二、数据类型判断

  基本类型:typeof

  引用类型:instanceof

var a=10;console.log(typeof a);//numbervar b=true;console.log(typeof b);//booleanvar arr=[];console.log(arr instanceof Array);//truevar obj={};console.log(obj instanceof Object);//true;var fun=function(){  var i=0;  console.log(i);            }console.log(fun instanceof Function)//true

三、存储机制

  基本数据类型:是存放于栈内存中,包括变量标识符和变量的值,基本数据类型复制后开辟的是新的内存,两个变量互不影响。

  引用类型:保存在堆内存中,是对地址的引用(及指针),所以变量复制后的两个变量指向的还是同一个对象,因此对其中一个进行操作,另一个结果也会受到影响。

 

  先给大家举点例子吧

 

var num1=10;var num2=num1;num2-=2;console.log(num1,num2);//10,8var arr1=[1,2,3];var arr2=arr1;arr2.push(4);console.log(arr1,arr2);//[1,2,3,4],[1,2,3,4]var person1={name:'zhangsan',age:20}var person2=person1;person2.name='lisi';console.log(arr1,arr2);//{name:'lisi',age:20},{name:'lisi',age:20}

 

 

四、创建对象实例的方法

  1,使用new操作符后跟Object构造函数

  2,字面量

  

var obj=new Object();//或var obj2={};console.log(obj,obj2);//{},{}     console.log(obj==obj2)  false  堆内存,不同地址/获取//以及点表示法和方括号表示法var person1={name:'zhangsan',age:20}console.log(person1.name)//zhangsanconsole.log(person1['name'])//zhangsan

  ps:点表示法和方括号表示法的区别

  1,能用点表示法标识的一定可以用方括号表示,但能用方括号表示的,不一定能用点表示

  2,方括号表示法可以用变量名做属性名,点表示法不能

  3,方括号可以用纯数字表示属性,点表示法不能

  4,方括号表示法可以用js的关键字和保留字作为属性,点表示法不能

 

  此处我就不向大家要一一举例啦,这里还是很好理解的,总之就是方括号表示法的功能强于点表示法,但是一般我们用点表示法注意下特殊的就好了。

 

转载于:https://www.cnblogs.com/epines/p/9131305.html

你可能感兴趣的文章
两分钟搞定博客园自定义样式
查看>>
回调函数(在原生ajax中应用) 事件监听 与promise的应用介绍
查看>>
利用纯真ip地址库 查询 ip所属地
查看>>
java中的单例模式
查看>>
Elasticsearch Server,2nd Edition pdf 翻译 中文
查看>>
Django-缓存
查看>>
[无关IT]就这样在凌晨写一篇吧~
查看>>
软件战争(八)开放还是封闭
查看>>
java.util.Map.Entry接口
查看>>
Linux中crond服务与crontab用法
查看>>
css如何定位网站的footer
查看>>
centos6-honeyd安装&配置
查看>>
SQL竖表转横表 / 横表转竖表
查看>>
PLSQL连接ORACLE配置字符串简介 oracle网络配置 三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora原理解释...
查看>>
jquery remove() detach() empty()三种方法的区别
查看>>
分享8年开发经验,浅谈个人发展经历,明确自己发展方向
查看>>
Balanced Team
查看>>
开发使用Node.js的一个小技巧
查看>>
关于TextFiled超链接无法通过HtmlText点击的处理
查看>>
2018暑假第三周总结(7.16-7.29)
查看>>