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

来源:互联网 发布:零基础学画画的书 知乎 编辑:程序博客网 时间:2024/06/15 02:33
/*
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);//20alert(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);//stringalert(typeof b);//booleanalert(typeof i);//numberalert(typeof u);//undefinedalert(typeof n);//objectalert(typeof o);//object//引用类型 result=variable instanceof constructoralert(person instanceof Object);alert(colors instanceof Array);alert(pattern instanceof RegExp);






原创粉丝点击