基本类型:undefined null number string Boolean
简单数据段,按值传递,按值访问,操作保存在变量中实际的值.
引用类型:
(不严密但是够用)由多个值构成的对象,值保存的内存对象中,不能直接操作对象的内存空间,实际是在操作对象的引用而不是实际对象,按引用访问!
----
定义基本和引用类型的方法是类似的;创建一个变量并且赋值.
ar person=new Object(); person.name="solin"; console.log(person.name);
注意语法 O要大写.
对不同类型的值操作不同,引用类型的值可以添加/删除属性和方法. //Object是引用类型.
如果对象不被销毁属性不被删除,这个属性将一直存在.
但是!基本类型不能添加属性,
var name="solin"; name.age=21; console.log(name.age);
undefined
说明只能给object动态的添加属性.
复制:
基本类型复制创建两个副本,互相不影响.
但是!!引用类型创建时复制一个指针,指向在堆中的一个对象.改变其中一个就会改变另外一个.
var obj1=new Object(); var obj2=obj1; obj1.name="solin"; console.log(obj2.name);
输入结果为Solin
------
传参
参数按值传递,引用类型的传递如同引用类型的复制.
function add(num) { num+=10; return num; } var count=20; var result=add(count); console.log(count); console.log(result);
count 和num 并不认识,只是有相同的值,参考前面.
function setName(obj) { obj.name="solin"; } var person1=new Object(); var person2="hi"; setName(person1); setName(person2); console.log(person1); console.log(person2); console.log(person1.name); console.log(person2.name);
{ name: 'solin' }
hi
solin
undefined
function setName(obj) { obj.name="solin"; obj=new Object(); obj.name="messiah"; } var person=new Object(); setName(person); console.log(person.name);
solin
局部对象执行后立即会被销毁,参数可以想象为局部变量.按值传递
记得引用类型是复制值和指针.
引用类型instanceof