- 构造函数中常用的方法
- instanceof 检测变量类型的方法
2. 构造函数的方法 ,构造函数原型中的 isPrototypeOf() 判断对应对象是否是基于对应构造函数创建的
3. 对象.hasOwnProperty(属性名 key) 判断当前属性名是否在其构造函数里
4. in 判断对象是否具备对应属性 key in 对象
5. 编写一个方法,判断对象的当前属性 ,是否是从原型中得到的
如果一个对象具有对应属性 ,但是该属性不是从构造函数中得到的,那么该属性就是在原型中
- 面向对象编程面向对象编程的特
1. 面向对象编程的特点
抽象性:通过对象分析问题
封装性:属性以及方法封装到对象中,节约维护成本,安全
继承性:JAVA,PYTHON 会讲继承性
多态性:一个类可以创建 多种对象 js基本用不到
2. 公开属性key:可以通过对象任意传递 不安全
参数:可以任意的传递,任意修改,任意的获取,只要找到对应对象就可以任意的去更改的对应属性,不安全
3. 属性key:只能通过方法对应的访问以及设置,无法通过对象直接获取
3.1 如何获取私有属性:
1)创建布局变量,通过局部变量实现私有属性
2) 通过get和set方法获取和设置对应的私有属性
3.2 get和set的作用以及目的
get:获取对应的私有属性
set:更改对应的私有属性
目的:保证属性的安全,增加参数的安全性,保证编程的完善
- 面向对象编程继承性
继承性:父类 ,写公共的方法和属性;子类继承,节约代码
动物类 都具有的属性和方法 —父类
狗类 ,猫类 ,老虎类,狮子类—子类
1. 原型链继承:将Animal对象赋值给Dog原型上,让父级对象作为子集的原型
问题:无法对父级属性进行初始化,所有的属性都是相同的
2. 冒充继承:通过call或者apply更改对应的this指向完成继承
问题:冒充继承无法继承 原型中的方法
call和apply 作用:改变this的指向
2.1. call(对象,参数) 更改对应的this指向,将其对应的this指向,指向参数对象
2.2. apply(对象,[1,2,3])更改对应的this指向,将其对应的this指向,指向参数对象
2.3 Math对象
Math.max() 返回一组数中最大的数
例:求一个数组中的最大值
3. 混合继承:通过冒充继承来继承对应属性 ,通过原型继承,继承对应方法
四、ES6
ES6:新时代JS语法的统称,js新的语法标准
便利更新:1)面向对象,由于js没有类,所以存在构造函数 ES6有class类
2)出现一个新的作用域:块级作用域 (全局 ,作用域)
1. let const 全局 局部 块级。let 定义变量,const 定义常量
2. var 变量名=值 全局作用域 局部作用 只有在函数内部才叫局部
3.第一个区别:存在块级作用域 {} if for
4.第二个区别 :var定义变量具有默认的提升功能 let和const不具有提升功能
5.第三个区别:var定义变量可以重复定义,let不允许重复定义
6. 第四个区别:var会被挂载都window上,let 和const不会