需要明白,js基本类型存放在栈,对象存放在堆. 结论:基本类型变量作为参数,不会改变变量值.对象变量作为参数,不修改属性(访问原始对象的操作),也不会改变变量值 起因,是群里一个问题: var a = [1,2,3]; function f(a){ a = [4,2,3]; } f(a); a // [1, 2, 3] //数组内部的值没有发生改变 var a = [1,2,3]; function f(a){ a[0]=4; } f(a); a // [4,2,3] 最后数组a的值发生了改变
转 在编写js代码时,我们有时会需要使用函数来模拟java中的类,并用它来产生对象,在定义了一个构造函数之后我们需要使用new操作符来调用调用函数才能得到我们想要的对象.例如: function Consructor(name){ this.name = name } var person1 = Constrcutor("张三");//undefined var person2 = new Constructor("张三");//得到一个对象{name:"