JavaScript面向对象程序设计
- object对象
-
new关键字代表的是新开辟一块内存空间
-
没有被引用的内存空间,会在适当的时候被销毁
- 两句代码含义等同
var person = new Object();var person = {};
- 两句代码含义等同
-
访问对象的属性除了用 对象引用
.属性key以外,还可以使用对象引用[属性key]
-
面向对象的程序设计
-
function构造器- 共同点:
- 动态创建一块内存空间,闭包
- 不同点:
- 函数调用是没有办法拿到空间的地址的,而且这块地址是一块临时地址,执行完函数之后,就会销毁
new开辟内存空间,把这块空间的地址返回,这块空间就有可能长期的被引用
- 共同点:
-
prototype原型- 通过原型使通过同样一个构造器所
new(创建)出来的对象具有相同的属性和行为 prototype本质就是一个对象
- 通过原型使通过同样一个构造器所
-
foreach -
this指代当前创建的这块内存this.name=name指代当前内存中的这个name属性 接收外界传过来的值 -
继承
-
本质就是从一个
prototype对象中把它的功能都copy到另一个prototype对象 -
继承为什么要循环
-
封装(面向对象程序设计过程)
- 1:找对象 小头爸爸 大头儿子 饭
- 2:抽象(类,构造器)
- 3:创建对象并且建立关系(操作对象)
-
-
prototype内存解析
prototype是原型,是一块所有对应构造器创建的对象都共享的内存空间- 在面向对象设计程序的时候,属性应该是对应的空间的,而功能应该是
prototype公共空间的
-
通过prototype扩展功能
- 所有的构造器都是继承于
Object构造器的,因此只要Object的原型里有的功能,所有的对象都有
- 所有的构造器都是继承于
-
call、apply方法
-
func.call(obj):调用func的时候,以obj这个对象的作用域去调用 -
改变函数在调用的时候里面闭包的作用域
-
call(obj,arg1,arg2,arg3);call第一个参数传对象,可以是null。参数以逗号分开进行传值,参数可以是任何类型。apply(obj,[arg1,arg2,arg3]);apply第一个参数传对象,参数可以是数组或者arguments对象
-