用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

郑羽    -  云代码空间

——

值类型和引用类型

2018-07-10|319阅||

摘要:1,值类型和引用类型的基本概念 2,常见的值类型和引用类型都有哪些? 3,数据类型检测 4,值类型和引用类型中的存储机制 5,创建对象的方式有哪些? 6,对象属性名的点表示法和方括号表示法 7,三种基本包装类型

二、概念
ECMAscript变量可能包括两种不同数据类型的值,一种叫简单类型或者说是值类型,指的是简单的数据段,另一种叫复合类型或者说是引用类型,是由多个值构成的对象。
在js的数据类型中,number,boolean,string,null和undefined都属于值类型,而函数和对象属于引用类型。

三、判断
判断数据类型的方法
检测基本值类型的方法:typeof
(ps:由于判断引用类型返回的值是Object,所以需要了解具体的类型,所以就要依赖instanceof操作符)
判断引用类型的方法:instanceof (返回true和false)
obj instanceof Array
obj instanceof Function
obj instanceof Object

四、存储机制
var num1=10;
var num2=num1;
num2-=2;
console.log(num1,num2);
//10,8

var 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}

基本数据类型:是存放于栈内存中,包括变量标识符和变量的值,基本类型复制后开辟新的内存空间,两个变量互不影响。
引用类型:保存在堆内存中,是对地址的引用(及指针),所以两个变量指向的还是同一个对象,对任何一个进行操作,其结果都会受到影响。

五、创建对象实例的方式
创建Object实例的方式,1,使用new操作符后跟Object构造函数

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)//zhangsan
console.log(person1['name'])//zhangsan

点和方括号表示法的区别
1,能用点表示的一定可以用方括号表示,但是能用方括号表示的,不一定能用点表示
2,方括号表示法可以用变量名做属性名,点表示法不能
3,方括号表示发可以用纯数字为属性,点表示法不能
4,方括号表示法可以用js的关键字和保留字作为属性,点不能

六、基本包装类型
ECMAscript提供了三个特殊的引用类型:Number,Boolean,String

var num=new Number();
var newNum=num.toString();
//此处toString()和基本类型的toString()方法不一样,此处是Number这个构造函数内部的一个方法(toString())

var a='10';
var b=new Number(a);//包装类型
var c=Number(a);//类型转换
console.log(typeof b,typeof c);
//object,number
顶 0踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: 郑羽
    • 等级: 初级程序员
    • 积分: 60
    • 代码: 0 个
    • 文章: 2 篇
    • 随想: 0 条
    • 访问: 0 次
    • 关注

    人气代码

      标签

      最新提问

        站长推荐