JavaScript面向对象(三)

在学习认识面向对象的过程中,能够深刻的认识和理解原型链是非常重要的。通过原型链能更好的帮助我们加深对面向对象的了理解。

继承

了解几种常见的继承模式

  • 扩展原型对象继承
  • 替换原型对象继承
  • 混入继承
  • 替换混入继承
  • 经典继承

原型链

原型链的基本概念

  1. 对象之间通过proto属性为纽带,形成一种连锁的上下级关系,这种关系仿佛就像是一个链条,我们把这种关系链条称之为原型链
  2. 原型链的顶端:所有对象通过无数次的proto的查找,最终都会找到某个对象,这个对象就是Object.prototype,我么就把这个对象称为原型链的顶端;而这个原型链的顶端对象proto属性的值是null
  3. 任何对象都是有proto属性的,一般都是指向他们的构造函数的原型

对象字面量的原型链

  1. 所有的对象字面量都是Object构造函数的实例
  2. 创建一个对象字面量相当于:new Object()
  3. Object.prototype是原型链的顶端

构造函数创建对象的原型链

  1. 通过构造函数的方式创建函数

一些属性和方法

hasOwnProperty

  1. 功能:判断属性是否为该对象的私有属性,而不是继承的得到的。

isPrototypeOf

  1. 功能: 判断参数对象是否直接继承或者间接继承自该对象,如果有继承关系那么结果为true,否则结果为false
  2. 代码:
    1
    2
    3
    4
    5
    function Person(){}
    var p1=new Person();
    console.log(Person.prototype.isPrototypeOf(p1));//true
    console.log(Object.prototype.isPrototypeOf(Person.prototype));//true——>Person.prototype直接继承Object.prototype
    console.log(Object.prototype.isPrototypeOf(p1));//true

propertyIsEnumerable

  1. 功能:检测某个属性是否是对象的自有属性并且可以使用for…in遍历

instanceof

  1. 功能:检测某个对象是否另一对象的实例对象,返回的是一个布尔值

×

可以的话,我想喝杯咖啡续命

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 继承
  2. 2. 原型链
    1. 2.0.1. 原型链的基本概念
    2. 2.0.2. 对象字面量的原型链
    3. 2.0.3. 构造函数创建对象的原型链
  3. 2.1. 一些属性和方法
    1. 2.1.1. hasOwnProperty
    2. 2.1.2. isPrototypeOf
    3. 2.1.3. propertyIsEnumerable
    4. 2.1.4. instanceof