一、创建对象的四种方式优缺点
1、直接创建对象,好处:简单,方便。缺点:无法量产
2、工厂模式创建对象,好处:可以量产对象。缺点:通过工厂创建出来的对象无法明确对应的类型。
3、构造函数创建对象,好处:可以确定类型。缺点:共用的方法,占据内存。
4、原型模式创建对象,将共有的办法放入构造函数的原型里 __proto__为实例化对象的原型,protype是构造函数的原型。
二、创建对象的时候new做了什么?
1、创建一个空对象{}
2、执行后面的构造函数,将函数内容this,指向空对象
3、函数执行完成后,将创建的空对象返回给前面的变量
三、面向对象的编程特点?
1、抽象性:通过对象分析具体问题。
2、封装性:将属性和方法都封装到对象中,方便后期维护,节约二次开发成本
3、继承性:将对象的直接属性和方法进行传递
4、多态性:一个类,可以产生多个对象
四、对象属性
1、公有属性:可以任意访问,修改。
2、私有属性:必须通过方法才能进行访问或者修改,一般适用于密码,有一定校验规则的数据比如:邮箱,手机号
五、对象的继承方法
1、原型链继承:将原型改为对应的对象。缺点:无法初始化属性。
2、冒充继承:通过call或者apply改变原有函数的this指向,实现继承原对象的构造函数。缺点:无法将原型中所带有的方法和属性继承。
3、混合继承(冒充+原型链继承)
六、call和apply的区别
1、 .call(对象,参数,参数) 改变this的指向
第一个参数:更改this指定到的对象
后面的参数就是当前方法需要的参数
2、 .apply(对象,[参数,参数,参数])
改变this指向 ,还可以改变传参的方式 , 统一的用数组传参
我们经常使用Math.max()或者Math.min()方法来从一组数据中获取最大或者最小的数
Math.max()语法:Math.max(n1,n2,n3,...,nX),获取里面参数的最大值,不能是数组
七、面向对象 set get 作用以及目的
get和set不是类的属性,而是字段的属性,控制私有字段的可访问性,用于保护内部数据的安全,get用于获取字段的值(只读属性)意思是只能读取而不能对其赋值,set用于获取字段的值(只写属性)意思是只能赋值而不能读取。如果将get和set绑定在一起就是字段的封装,类里面有静态和非静态,static可以用于修饰方法、变量、类、字段、属性,用static修饰的方法称为静态方法,需使用类名调用,调用前需要初始化。
目的:实现属性的私有性,增强数据的安全性