javascript 基本类型和引用类型的值【javascript高级程序设计】

/*
ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值。
基本类型值指的是那些保存在栈内存中的简单数据段,即这种值完全保存在内存中的一个位置。
而引用类型值则是指那些保存在堆内存中的对象,意思是变量中保存的实际上是一个指针,这个指针指向内存中的另一个位置,该位置保存对象。
5中基本数据类型:Undefined、Null、Boolean、Number和String.
这5种基本数据类型的值在内存中占有固定大小的空间,因此可以把它们的值保存在栈内存中。
这样可以提高查询的速度。对于保存基本类型值的变量,我们说它们是按值访问的,因为我们操作的是它们实际保存的值。
如果赋给变量的是一个引用类型的值,则必须在堆内存中为这个值分配空间。由于这种值得大小不固定,因此不能把它们保存到占内存中。
但内存地址的大小是固定的,因此可以将内存地址保存在栈内存中。这样,当查询引用类型的变量时,就可以首先从栈中读取内存地址,然后再
“顺藤摸瓜”地找到保存在堆中的值。对于这种查询变量值的方式,我们把它叫做按引用访问,因此我们操作的不是实际的值,而是被那个值所引用的对象。

*/

/*
//4.1.1 动态属性
//引用类型
var person = new Object();
person.name = "Nicholas";
alert(person.name);//Nicholas
//基本类型
var name = "Nicholas";
name.age=27;
alert(name.age);//undefined

//总结:对于引用类型的值,我们可以为其添加属性和方法,也可以改变和删除其属性和方法。
//但是,我们不能给基本型类的值添加属性,尽管这样做不会导致任何错误。
*/

/*
//4.1.2 复制变量值
var num1=5;
var num2=num1;
alert(num2);

var obj1=new Object();
var obj2 = obj1;
obj1.name="Nicholas";
alert(obj2.name);
*/

//4.1.3 传递参数
/*
function addTen(num){
	num+=10;
	return num;
}
var count=20;
var result=addTen(count);
alert(count);//20
alert(result);//30
*/

/*
function setName(obj){
	obj.name="Nicholas";
}
var person = new Object();
setName(person);
alert(person.name);//Nicholas
*/

/*
function setName(obj){
	obj.name="Nicholas";
	obj=new Object();
	obj.name="Greg";
}
var person = new Object();
setName(person);
alert(person.name);//Nicholas
*/

//4.1.4 检测类型
//基本类型用 typeof 检测
var s = "Nicholas";
var b = true;
var i = 22;
var u;
var n =null;
var o = new Object();
alert(typeof s);//string
alert(typeof b);//boolean
alert(typeof i);//number
alert(typeof u);//undefined
alert(typeof n);//object
alert(typeof o);//object

//引用类型 result=variable instanceof constructor
alert(person instanceof Object);
alert(colors instanceof Array);
alert(pattern instanceof RegExp);






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值