可以通过instanceof方法:
if (variable instanceof Object == true) {
// variable是引用类型
}
下面从三个方面说明基本类型及引用类型的用法及区别。
1, 动态属性
不能给基本类型的值动态添加属性,例如:
var name = "Jack";
name.age = 27;
console.log(name.age); // undefined
可以给引用类型的值动态添加属性,例如:
var person = {};
person.name = "Jack";
console.log(person.name); // "Jack"
2, 复制变量值
基本类型的复制会创建一个新的值,例如:
var str1 = "a";
var str2 = str1;
str1 = "b";
console.log(str2); // "a"
由此可见,str2只是str1的一个副本,两个变量之间可以参与任何操作而不会互相影响。
引用类型的复制则不同,新的变量与原来的变量指向内存中的一个对象,复制操作结束后,两个变量实际上将引用同一个对象。
因此,改变其中一个变量的值,将影响另一个变量。例如:
var obj1 = {};
var obj2 = obj1;
obj1.name = "Jack";
console.log(obj2.name); // "Jack"
3, 传递参数
可以将函数的参数理解为局部变量。基本类型值的传递如同基本类型变量的复制一样,引用类型值的传递如同引用类型变量的复制一样。例如:
基本类型参数:
function add(val) {
val += 10;
return val;
}
var num = 20;
var result = add(num);
console.log(num); // 20
console.log(result); // 30
引用类型参数:
function setName(obj) {
obj.name = "Mark";
}
var person = {};
person.name = "Jack";
setName(person);
console.log(person.name); // "Mark"
总结:
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!