前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript中的继承链

JavaScript中的继承链

作者头像
Dreamy.TZK
发布2020-06-11 16:53:50
5280
发布2020-06-11 16:53:50
举报
文章被收录于专栏:小康的自留地小康的自留地

继承链

类别

备注

constructor

prototype

__poroto__

(构造)函数

函数即对象

指向Function

指向一个constructor为自身的空对象

对象

指向创建该对象的构造函数

源于创建该对象的构造函数的显式原型

Function

是所有构造器的源头

指向自身

对象的constructor指向自身

Object

Object.prototype是所有原型的源头

指向Function

是一个constructor指向自身的空对象

参考于:

10-11
10-11
lALPGp4a6oGudk_NA6TNA8s_971_932.png_720x720q90g
lALPGp4a6oGudk_NA6TNA8s_971_932.png_720x720q90g

面向对象的继承

  1. 基于对象的原型实现 object.__proto__ = obj指向一个对象
  2. 基于构造函数的原型实现 Object.prototype指向一个空对象

继承常见的几种方式

  • 原型链继承: 原型与对象继承; 只继承于原型 问题:
    1. 实际上并不是真正的继承, 其实是多个构造函数之间共享一个对象(属性和方法)
    2. 创建子类的对象时, 不能向父级的构造函数传递任何参数。
  • 原型式继承
  • 借助构造函数: apply() 或 call() 方法 问题: this 的传递
  • 组合方式继承: 原型链 + 构造函数

面向对象

对象

创建对象的方式

  1. 构造函数方式 var obj = new Object()
  2. 直接量方式 var obj = { name: "lilei", sayMe: function () { console.log("this is lilei"); } }

构造器(constructor)

对象的构造器都是指向创建该对象的构造函数。例如以下示例代码:

代码语言:javascript
复制
function Foo() {}
var foo = new Foo()

上述示例代码中的 foo 对象的构造器就是 Foo。

隐式原型(__proto__)

对象的隐式原型与创建该对象的构造函数的显式原型是指向同一个对象。

代码语言:javascript
复制
function Foo() {}
var foo = new Foo()

console.log(foo.__proto__ === Foo.prototype)

函数

函数创建方式

  1. 直接量方式 var fun = function(){}与 JavaScript 中的变量是存在关系,例如以下示例代码: var fun = function(){} var fun = 'this is text' console.log(fun) // 'this is text'上述示例代码存在覆盖问题。
  2. 初始化器方式 function fun(){}
  3. 构造函数方式 var fun = new Function()上述示例代码说明函数是一个 Function 类型的对象。

函数的特性

  1. 函数可能与变量之间存在关系(直接量方式定义函数时)
  2. 函数与构造函数允许同时存在的
  3. 函数是一个 Function 类型的对象

显式原型(prototype)

构造函数的显式原型与利用该构造函数所创建对象的隐式原型是指向同一个对象。

构造器(constructor)

函数的构造器就是 Function。

代码语言:javascript
复制
function fun(){}

console.log(fun.constructor === Function)

隐式原型(__proto__)

函数的隐式原型与 Function 的显式原型是指向同一个对象。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 继承链
  • 面向对象的继承
    • 继承常见的几种方式
    • 面向对象
      • 对象
        • 函数
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档