一、堆栈
堆&栈:
两者都是存放临时数据的地方。
栈是先进后出的,就像一个桶,后进去的先出来,它下面本来有的东西要等其他出来之后才能出来。
堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即动态分配内存,对其访问和对一般内存的访问没有区别。对于堆,我们可以随心所欲的进行增加变量和删除变量,不用遵循次序。
栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。
堆区(heap) 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。
堆(数据结构):堆可以被看成是一棵树,如:堆排序;
栈(数据结构):一种先进后出的数据结构。
二、原型对象&原型链
1、原型对象:
原型对象是新对象的模板,它将自身的属性通过this共享给新对象。一个对象不但可以享有自己创建时和运行时定义的属性,而且可以享有原型对象的属性。
个人理解类似于子类与父类关系,创建的实例类似于原型对象的子类,虽然子类可以调用父类的属性和方法,但是在JS里面有限制,则在原型对象设置了this的属性和方法才能够被子类调用获取,若没有this的属性和方法仅仅只是原型对象自身可以使用。这点一定要注意!
2、原型链:
实际上,在每个函数对象创建的时候,都会自带一个prototype的属性,