博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript 基本类型和引用类型的区别
阅读量:5905 次
发布时间:2019-06-19

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

基本类型

基本类型为:可以用typeof检测为什么类型

  • undefined   变量未赋值时为undefined   var some; typeof some //undefined
  • number  typeof 12   //number
  • null      var call=null  typeof car //object

    从逻辑上讲,表示一个空对象指针,这也是typeof null为object的原因,如果定义的变量将来用于保存对象,建议初始化的时候为var obj=null,这样一来,直接检查null的值就可以知道相应的变量是否已经保存一个对象的引用

  • boolean typeof true   //boolean
  • string typeof "hello"  //string
  • object   var obj={},  typeof obj //object
引用类型
  • object  object有两种创建方式
    var person=new Person();person.name="Lily";person.age=22;
    var person={             name:“Lily”,             age:22
  • Array
  • Date
  • RegExp
  • Function
两者的区别

1.动态的属性

var person=new Object();person.name="Lily";alert(person.name)   //"Lily"
var person="Lily";person.name="Lucy";alert(person.name)  //undefined

可以看到我们可以给基本类型添加属性,但在下次访问的时候,这个属性就不见了,可以看出只能给引用类型添加属性

2.复制变量值

var num1=5;num2=num1;num1=7;alert(num2) //5
var obj1={name:"Lily",age=22};obj2=obj1;obj.addr="shenzhen"alert(obj2.addr)   //shenzhen

obj1和obj2都指向同一个对象,当obj1增加了addr属性后 ,可以通过obj2访问这个属性,因为这两个变量引用的都是同一个对象

3.传递参数

ECMAScript都是按值传递的

function add(num){  num+=10;  return num; }var count=20;var result=add(count);alert(count) //20alert(result) //30
function add(obj){ obj.name="Lily";}var person=new Object();person.name="Lucy";add(person);alert(person.name)  //Lily

person和obj引用的是同一个对象,即使这个对象是按值传递的,obj也会按引用来访问同一个对象,于是obj修改了属性name的值,person也会有反应

function add(obj){ obj.name="Lily";  obj=new Object();  obj.name="Jack";}var person=new Object();person.name="Lucy";add(obj);alert(person.name)  //Lily

这个例子就很好的证明了参数是按值传递的,如果是按引用类型,弹出的应该为Jack

4.检测类型

基本类型用typeof,引用类型用instanceof

转载于:https://www.cnblogs.com/zengm/p/3678981.html

你可能感兴趣的文章
Codeforces Round #442 (Div. 2) A B
查看>>
封装一个日期时间选择器
查看>>
极值问题(acms)
查看>>
swift UI专项训练8 展示数据
查看>>
openstacks
查看>>
PHP5下单独编译php模块
查看>>
字体图标学习
查看>>
局域网网速变慢的故障细致分析
查看>>
oracle 远程tns配置
查看>>
虚拟桌面带宽评估
查看>>
一起学shell(十一)之安全的shell脚本:起点
查看>>
Microsoft® Deployment Toolkit 2010之快速部署Windows 7
查看>>
vue中this.$router.push()传参简单说明
查看>>
html中base标签的用处
查看>>
LNMP的技术讲解
查看>>
前端基础入门一(HTML)
查看>>
再不努力,就真的没有机会了
查看>>
SVN Hooks的介绍及使用
查看>>
路由器设置密码和标语
查看>>
CSS3属性
查看>>