美文网首页
js面向对象:原型及继承

js面向对象:原型及继承

作者: WHU_GIS_LJ | 来源:发表于2018-10-09 19:14 被阅读0次

1. __proto__prototypeObject.create()Object.getPrototypeOf()Object.setPrototypeOf()

1.1 __proto__
  • __proto__是每个对象都有的一个属性,可称为隐式原型。一个对象的隐式原型指向构造该对象的构造函数的原型,即指向构造函数的 prototype

  • 示例:

let a = {

    name: "luojian"

}

对象 a 的图示:

image.png
1.2 prototype
  • prototype 是函数(除部分内置函数)外特有的属性,称为原型属性。这个属性是一个指针,指向一个对象,称为原型对象。原型对象包含所有实例共享的属性和方法。原型对象有一个 constructor 属性,指向原构造函数。

  • 示例:

function A(id) {

    this.id = id

}

A.prototype.getID = function() {

    return this.id

}

构造函数 A 的图示:

image.png
1.3 Object.create()Object.getPrototypeOf()Object.setPrototypeOf()
  • Object.create(p) 创建一个以p为原型的对象,即对象的 __proto__ 属性为 p。

  • Object.getPrototypeOf()Object.setPrototypeOf() 用于获取和设置对象的原型(__proto__ 属性)

let p = {

  name: "a"

}

let a = {}

let b = new Object()

let c = Object.create(null)

let d = Object.create(p)

console.log(a.__proto__) // Object

console.log(b.__proto__) // Object

console.log(c.__proto__) // undefined

console.log(d.__proto__) // p

console.log(Object.getPrototypeOf(d)) // p

// 将 d 的原型设置为 a

Object.setPrototypeOf(d, a)

console.log(Object.getPrototypeOf(d)) // a

2. javascript 继承

封装一个对象由构造函数与原型共同组成,因此继承也会分别有构造函数的继承原型的继承

先封装一个父类对象 Person

let Person = function(name, age) {

  this.name = name

  this.age = age

}

Person.prototype.getName = function() {

  return this.name

}

Person.prototype.getAge = function() {

  return this.age

}

Student 继承 Person

let Student = function(name, age, grade) {

  // 构造函数继承

  Person.call(this, name, age)

  this.grade = grade

}

Student.prototype = Object.create(Person.prototype, {

  // 重新指定新的constructor属性

  constructor: {

    value: Student

  },

  // 添加新的实例共享属性或方法

  getGrade: {

    value: function() {

      return this.grade

    }

  }

})

相关文章

  • Js面向对象

    一、Js面向对象 二、Js原型及原型链 1、原型 JavaScript 的每个对象都继承另一个父级对象,父级对象称...

  • JS汇总---面向对象&数组

    面向对象 js原型链的继承 静态属性怎么继承 js原型链以及特点 面向对象有哪几个特点 封装,继承,多态 对象的继...

  • lesson 5 面向对象及原型链 2021-04-29

    课程标题 面向对象及原型链 课程目标 面向对象思想 原型及原型链 继承 知识点 面向对象思想 原型链的指向 new...

  • js面向对象:原型及继承

    1. __proto__ 和 prototype, Object.create()、Object.getProto...

  • JavaScript之面向对象编程

    五、面向对象编程 目录:面向对象原型继承、面向对象class继承(ES6引入的) 1.面向对象原型继承 类:模板 ...

  • js_继承及原型链等(四)

    js_继承及原型链等(三) 1. 继承 依赖于原型链来完成的继承 发生在对象与对象之间 原型链,如下: ==原型链...

  • JS中的原型和原型链详解

    JS中的原型和原型链是大家彻底搞懂JS面向对象及JS中继承相关知识模块非常重要的一个模块,一旦突破这块知识点,相信...

  • JS面向对象、原型、继承

    1.JS对象创建的三种方式 1.第一种形式 工厂模型 function Person(){}// 添加原型属性Pe...

  • JS中的继承

    js并不是想java一样面向对象,而是基于对象,所以js是通过prototype的原型链继承 prototype ...

  • JavaScript基础系列之——继承

    一、基本概念: JavaScript基于原型实现面向对象特性,在JS编程中,面向对象的继承是重点,本文将从简单...

网友评论

      本文标题:js面向对象:原型及继承

      本文链接:https://www.haomeiwen.com/subject/rnpyaftx.html