1.对象分为值类型和引用类型
- 值类型(不是对象)
console.log(typeof x) //undefined
console.log(typeof 10) //number
console.log(typeof 'abc') //string
console.log(typeof true) //boolean
- 引用类型(都是对象)
console.log(typeof function (){}) //function
console.log(typeof [1,'abc',true]) //object
console.log(typeof {a:10,b:5}) //object
console.log(typeof null) //object
console.log(typeof new Number(10)) //object
- 类型的判断
值类型判断用typeof
引用类型判断用instanceof
2.什么是对象
一切引用类型都是对象,对象是若干属性的集合
3.函数和对象
对象都是通过函数创建的
function fn(){
this.name='aa';
this.year = '2018';
}
var fn1 = new fn();
var aa = {a:0,b:1};
//等价于
var aa = new Object();
aa.a=0;
aa.b=1;
var bb = [1,2];
//等价于
var bb = new Array();
bb[0] = 1;
bb[1] = 2;
console.log(typeof Object) //object
console.log(typeof Array) //object
4.prototype(原型)
每个函数function都有一个prototype(原型)
每个对象都有一个proto(隐式原型,低版本浏览器不支持这个属性)
var obj = new Object();
//obj.__proto__ === Object.prototype,即每个对象都有一个__proto__,指向创建该对象的函数的prototype
//Object.prototype是一个特例,指向的是null
函数是一种对象,也有proto,指向的是Object.prototype