一、对象的方法

1、instanceof 变量的类型
instanceof 返回布尔值 相当于判断

2、isPrototypeOf
检测当前对象是否基于对应的构造函数创建出来的
语法:构造函数.prototype.isPrototypeOf(对象名)

3、hasOwnProperty
判断属性或者方法是否属于构造函数内部
语法:对象.hasOwnProperty(属性)

4、in判断当前对象是否具有对应属性
封装一个方法 传入 一个对象 key,判断这个key是否属于对象的原型上,返回布尔值
怎么判断基于原型? 1.对象需要具有key 2.这个属性不是构造函数里面的
语法:key in 对象

二、面向对象编程的特点
1、抽象性: 通过对象来分析具体的问题
2、封装性
将属性和方法都封装到对象中,方便统一管理 便于维护 便于二次开发 安全性较高(私有)
1.公开属性
在任何位置都可以随便访问和修改 ,修改过程中没有任何的限制
2.私有属性
不能随意访问,必须通过指定的方法来访问和修改
1.安全系数较高的属性 2.设置时不能随意设置
3、继承性
将对象的属性和方法进行传递 ,Java C C++
1. 如何实现 继承?
创建一个老虎类 继承 Animal中所有的属性和方法
2. 当构造函数中如果没有对应的属性,怎样找这个属性?
当对象调用一个属性或者方法时,
查找顺序: 1.先去构造函数内部查找 2.再去原型中查找

1、第一种继承方式:原型链继承
将父类对象挂载到儿子原型上

2、第二种继承方法:冒充继承法
通过call或者apply改变this的指向性,直接讲构造函数在内部使用

3、第三种继承方法: 组合继承方式
原型链继承+冒充继承

4、多态性
一个类 可以产生多种对象!js用不了!
三、Call和apply

call()方法 改变this的指向性 第一个参数 this更改为哪个对象

apply方法 改变this的指向性
语法: apply(改变的对象,[1,2,3])

四、Max.max()
Math.max() 返回一组数中的最大值;用于max方法 只能参数列表 ,不能直接传入数组

实例:
1、创建一个人类然后继承学生类以及教师类,分别通过三种不同的继承方式


2、自己写一个原型链继承,独立完成原型链图


本文深入探讨了JavaScript中面向对象编程的关键概念,包括instanceof、isPrototypeOf、hasOwnProperty和in操作符的应用。重点讲解了封装性、继承性(原型链、冒充继承与组合继承)以及Call和Apply的作用。通过实例展示了三种继承方式并构建原型链图。

4163

被折叠的 条评论
为什么被折叠?



