原型
- 每个对象都会在其内部初始化一个属性,就是prototype(原型)
- 使用hasOwnProperty()可以判断这个属性是不是对象本身的属性
object.hasOwnProperty(proName)
object:一个对象的实例
propName:一个属性名称的字符串值
返回一个布尔值
原型链中的this
- 所有从原型或更高级原型中得到,执行的方法,其中的this在执行时,就指向了当前这个触发事件执行的对象
原型对象
- 原型对象的定义:构造函数会自动创建1个对象,这个对象就是原型对象,叫构造函数的原型对象。
- 原型对象的定义:每个函数都有一个prototype属性,prototype的值是对象,这个prototype对象就是函数的原型(原型对象)
- 实例化对象有一个属性(指针),proto ,这个属性指向的是对构造函数的原型对象。
- 型对象有一个属性,constructor,这个属性指向的是构造函数。
- 获取原型对象:构造函数.prototype
- 构造器:属性prototype有一个属性constructor,这个constructor就叫构造器,constructor是指向原型对象的构造函数。
- 当对象访问自身属性或方法,先从自身找,看有没有,如果有的话就是使用,没有的话就去构造函数的原型上去找,找到就使用
- 原型里面设置的属性和方法都是存在共享的。
原型对象的作用:
- 一般情况下,会把方法声明在原型对象里。目的是实现继承。
- 当对象访问自身属性或方法时,先从自身找有没有,如果有,就使 用,如果没有,就去构造函数的原型上找。有就用。
- 实例化对象有一个属性,proto ,这个属性指向的 构造函数 的原型对象。
- 在构造函数里设置的属性和方法
原型链
- 原型链的定义:当对象访问属性和方法时,先从自身呢开始查找,如果没找到,就去构造函数原型上去找,如果还没找到,就去原型对象的原型对象上找
直到object.prototype.proto=null时,如果还没找到,就返回undefined,这个查找得过程就是原型链,原型链得作用就是为了继承。 - 关系:instance.constructor.prototype = instance.proto
_proto_属性值指向它的构造函数的prototype属性值 - 判断一个属性是不是自身的,hasOwnproperty()方法检测一个属性是否存在于实例化对象还是原型中,这个方法只在(属性存在于实例中,才会返回true)
- 原型链就是查属性的顺序;
继承
- 原型链继承的缺点:
1-1 .不能继承构造函数内的属性和方法 - 不能向构造函数内传参
2-1 .修改构造函数
2-2 .优点 :可以向构造函数内传参 - .缺点 :不能原型对象上的属性和方法
- 构造函数继承:在构造函数内,调动继承对象的构造函数,修改 this 指 向。
- 原型继承的特点:只继承共享的属性和方法
- 总结:一共有4种继承,1.原型链继承 2.原型继承 3.构造函数继承 4组合继承
- 原型连继承:在一个构造函数的原型上赋给另一个构造函数实例化对象就是原型链继承。
- 原型继承:在一个构造函数的原型上赋给另一个构造函数