值类型和引用类型的传递

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function Person(name,age,salary){
this.name=name;
this.age=age;
this.salary=salary;
}

function f1(person){
person.name="ls";
person =new Person("aa",18,10);
}
var p =new Person("zs",18,1000);
console.log(p.name);
f1(p);
console.log(p.name)
//zs
//ls

涉及:

  • 值类型与引用类型的区别
  • 堆内存与栈内存

基本数据类型(简单、原始,基本)

Undefined,Null,Symbol,String,Number,Boolean

基本数据类型的变量是存放在栈内存中的

引用类型

Object,Array,Date,RegExp,Function

引用类型的值是保存在堆内存中的对象

检测类型

  1. typeof

    检测变量是否为基本数据类型

  2. instance of

    判断某个构造函数的prototype属性所指向的对象是否存在于另一个要检测对象的原型链上

    1
    ({}) instance of Object		//true

关于原型链

每个实例对象都有一个私有属性__proto__指向它的构造函数的d的原型对象prototype