一、js基本数据类型
基本数据类型:string number boolean null undefined symbol
null:
表示一个空对象指针,用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象
undefined:
// 1、定义了变量没有赋值
var a;
console.log(a); //undefined
// 2、数组越界
var arr=[1,2,3];
console.log(arr[5]); //undefined
// 3、访问对象没有的属性
var obj={
name:'xiaoming'
}
console.log(obj.age); //undefined
// 4、函数默认返回undefinded
function fn(){
console.log("执行")
}
console.log(fn()); //undefined
typeof
console.log(typeof 'aaa'); //string
console.log(typeof 123); //number
console.log(typeof true); //boolean
console.log(typeof null); //object
console.log(typeof 函数); //function
console.log(typeof [1,2,3]); //object
console.log(typeof {name:'sss'}); //object
引用数据类型:array object
判断是数组或对象
var arr=[1,2,3];
console.log(arr.constructor === Array); //true constructor 返回实例的构造函数
console.log(arr instanceof Array); //true
console.log(Array.isArray(arr)); //true
var obj={name:'xiaoming'}
console.log(obj.constructor === Object); //true
console.log(obj instanceof Object); //true
二、对象、类
类:具有相同属性和方法的集合
// 构造函数 类
function Person(name,age){
this.name=name;
this.age=age;
}
// prototype原型对象:定义在原型对象下所有属性和方法能被所有实例化对象共享
Person.prototype.eat=function(){
console.log("eat.....")
}
var person1=new Person('小明',18);
var person2=new Person('明仔',11);
栈和堆
基本数据类型声明时在栈中开辟内存。
引用数据类型声明时,在堆中开辟内存,把指向堆内存的地址(指针)保存在栈内存中。