/变量作用域及内存
基本类型的值放在栈中,而引用类型的地址是放在栈中,但是它的值是放在堆中的
var box=new Object();
box.name='Lee';
alert(box.name);//
var box='heh';
box.name='Lee';
alert(box.name);//不是引用类型无法输出
ps:基本类型和引用类型都是复制栈里面的,不会复制到堆里面的
var box='hehe';
var box2=box;
box2='haha';
alert(box2);
alert(box);//他们两个是独立的空间,box2改变了,box1也不会改变
var box=new Object();
box.name='lele';
var box2=box;
box2.name='haha';
alert(box2.name);
alert(box.name);//他们仅仅复制的只是地址,都指向同一个对象,所以一个对象改变了其他的也就改变了
Ecm中所有函数的参数都是按值传递的。
function box(obj){//这里将传递一个引用类型的参数,但是它是按值来传递的,ps传递引用参数和按引用传参是有区别的
obj.name='lee';
var obj=new Object();
obj.name='ha';//js是不能按引用传参的
}
var obj=new Object();
box(obj);//要先调用
alert(obj.name);
检测类型
引用类型:instanceof可以分出Object类型中的数组、对象、正则表达式
名称+instanceof+(Array)、(RegExp)、(Object)
基本类型就用typeof
*/
基本类型的值放在栈中,而引用类型的地址是放在栈中,但是它的值是放在堆中的
var box=new Object();
box.name='Lee';
alert(box.name);//
var box='heh';
box.name='Lee';
alert(box.name);//不是引用类型无法输出
ps:基本类型和引用类型都是复制栈里面的,不会复制到堆里面的
var box='hehe';
var box2=box;
box2='haha';
alert(box2);
alert(box);//他们两个是独立的空间,box2改变了,box1也不会改变
var box=new Object();
box.name='lele';
var box2=box;
box2.name='haha';
alert(box2.name);
alert(box.name);//他们仅仅复制的只是地址,都指向同一个对象,所以一个对象改变了其他的也就改变了
Ecm中所有函数的参数都是按值传递的。
function box(obj){//这里将传递一个引用类型的参数,但是它是按值来传递的,ps传递引用参数和按引用传参是有区别的
obj.name='lee';
var obj=new Object();
obj.name='ha';//js是不能按引用传参的
}
var obj=new Object();
box(obj);//要先调用
alert(obj.name);
检测类型
引用类型:instanceof可以分出Object类型中的数组、对象、正则表达式
名称+instanceof+(Array)、(RegExp)、(Object)
基本类型就用typeof
*/