一、继承
1. JS 中没有继承的概念,我们只能使用原型链模拟继承
一个类People: 人类
人类的方法属性: 姓名 性别 年龄 吃 睡
好人类:helpother , kindHeard
坏人类:bitOther , heard
人类是好人类与坏人的交集,不是并集好人与坏人都继承了人类,但是丰富了人类
我们可以创建人类,让拥有人类特点的人群继承人类,可以减少其他类的代码数量和工作量,这种思维叫做继承
2. JS 中模拟继承的原理:子类的原型一、继承
3. JS 中没有继承的概念,我们只能使用原型链模拟继承
一个类People: 人类
人类的方法属性: 姓名 性别 年龄 吃 睡
好人类:helpother , kindHeard
坏人类:bitOther , heard
人类是好人类与坏人的交集,不是并集好人与坏人都继承了人类,但是丰富了人类
我们可以创建人类,让拥有人类特点的人群继承人类,可以减少其他类的代码数量和工作量,这种思维叫做继承
4. JS 中模拟继承的原理:子类的原型等于父类的原型对象
5.继承:
1) 实现继承核心语句 方法的继承
好人的原型等于人类的实例化对象
GoodMan.prototype = new People();
2)实现继承的核心语句 属性的继承
this.constructor.apply(this,arguments);
this.constructor 是Pople,好人类内部执行人类,
将人类的this指向好人类,将参数传递给人类,实现好人类对人类属性的继承
二、几种运算
1. in 运算
用于判断一个属性是否存在于一个对象中,存在返回真,不存在返回假
in 运算可以查找自身属性,也可以进行原型链查找
for in
枚举:将事情可能发生的情况 一一列举出来,
但是系统默认的属性,如 constructor 等属性是不可枚举的
for in 可以将原型链上所有的自己添加的属性列举出来
2. hasOwnProperty
这个方法是 Object.prototype,所以这个方法是任何对象都可以调用
表示判断某个对象自己内部是否包含某一个属性,存在返回真,不存在返回假
这个方法不会查找原型链,仅仅查找这个对象本身是否包含某一个属性
3. 使用点语法判断某属性是否存在于一个对象中
obj.e 如果返回 undefined,说明 e 不存在于 obj 中,会进行原型链查找
4. instanceof
类: class
实例: instance
a instance b
验证对象 a 是不是类 b 的实例化对象
运算原理:
遍历 HelloKiity 这个对象原型链上的每一个原型对象,
如果遍历到这个原型对象是某一个构造函数的原型,
那么就认为HelloKitty是这个构造函数的实例化对象,返回true
5. isArray
是es5新方法,用于验证一个对象是不是数组
Array.isArray(arr); // IE 9 开始兼容
6. isPrototypeOf
用来判断,要检查对象的原型链的对象,是否存在于指定的对象的实例中,是返回真,否则返回假
判断某个构造函数的原型,是否存在于指定对象的原型链中,是返回真 否则返回假