1.对象:
1.1万物皆对象
1.2三大特性:封装,继承,多态
1.3创建对象四种方法:字面量,new Object(),工厂函数,构造函数
2.基本类型与引用类型的区别
栈:自动分配内存空间,系统自动释放,里面存放的是基本类型的值和引用类型的地址
堆:动态分配的内存,大小不定,也不会自动释放。里面存放引用类型的值。
(1)基本类型:占用空间稳定,保存在栈中
(2)引用类型:占用空间不稳定,保存在堆中
3.构造函数和实例对象的关系
(1)constructor属性
构造函数实例化对象的constructor属性指向的是构造函数本身
要检测对象的类型,使用 constructor操作符,返回true为对象
每一个实例对象都具有一个 constructor 属性,指向创建该实例的构造函数
(2)instanceof关键字
检测对象的类型,也可以用使instanceof ,返回true为对象
4.构造函数会存在内存浪费问题
用构造函数创建多个对象时,虽然属性名都一样,但每创建一个实例都会多占用一些内存
5.原型
又能解决构造函数的内存浪费问题,又能让代码合理的方案:prototype。
每一个构造函数都有一个 prototype 属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。
每个实例中都有个__proto__对象,就是构造函数的prototype对象
也就是说:
1、任何函数都具有一个 prototype 属性,该属性是一个对象
2、构造函数有一个protoType属性,它本身是一个对象,我们称之为原型
3、构造函数的protoType原型对象的属性和方法,都可以被构造函数实例化的对象所继承
4、构造函数的protoType原型对象有个constructor属性,指向的是当前原型对象所在的构造函数
5、实例对象有__proto__属性,它是一个指针,指向的是构造函数的的原型prototype
6、实例对象都具有一个 constructor 属性,指向创建该实例的构造函数
6.实例化对象的查找规则
解析代码时,会先在实例对象里面找,找不到就会去她的原型对象里面找
7.把局部变量变为全局变量