博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
搞懂原型
阅读量:6186 次
发布时间:2019-06-21

本文共 1035 字,大约阅读时间需要 3 分钟。

类与原型

类: 是面向对象(Object Oriented)语言实现信息封装的基础,称为类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象.

类: 是描述了一种代码的组织结构形式,一种在软件中对真实世界中问题领域的建模方法.

原型

JavaScript 这门语言没有类的概念,所以 JavaScript 并非是基于类的继承,而是基于原型的继承。

JavaScript 摒弃类转而使用原型作为实现继承的基础,是因为基于原型的继承相比基于类的继承上在概念上更为简单。首先我们明确一点,类存在的目的是为了实例化对象,而 JavaScript 可以直接通过对象字面量语法轻松的创建对象。

每一个函数,都有一个 prototype 属性。 所有通过函数 new 出来的对象,这个对象都有一个 __proto__指向这个函数的 prototype。 当你想要使用一个对象(或者一个数组)的某个功能时:如果该对象本身具有这个功能,则直接使用;如果该对象本身没有这个功能,则去 __proto__ 中找。

  1. prototype [显式原型]

prototype 是一个显式的原型属性,只有函数才拥有该属性。 每一个函数在创建之后都会拥有一个名为 prototype 的属性,这个属性指向函数的原型对象。( 通过 Function.prototype.bind 方法构造出来的函数是个例外,它没有 prototype 属性 )。

  1. proto[隐式原型]

prototype 理解起来不难, __proto__ 理解起来就会比 prototype 稍微复杂一点。下面我们就讲讲 __proto__

其实这个属性指向了[[prototype],但是[[prototype]] 是内部属性,我们并不能访问到,所以使用__proto__ 来访问。

__proto__ 指向了创建该对象的构造函数的显式原型。

作用

显式原型:用来实现基于原型的继承与属性的共享。

隐式原型:构成原型链,同样用于实现基于原型的继承。

new操作符

当我们使用 new 操作符时,生成的实例对象拥有了 __proto__属性。即在 new 的过程中,新对象被添加了 __proto__ 并且链接到构造函数的原型上。

new的过程

新生成了一个对象

链接到原型

绑定 this

返回新对象

转载于:https://juejin.im/post/5cff5e25f265da1bcd37ce53

你可能感兴趣的文章
JetBrains发布了IntelliJ IDEA 2016.1
查看>>
MySQL InnoDB索引介绍及优化
查看>>
第一眼——AngularJS
查看>>
Nodejs进阶:核心模块https 之 如何优雅的访问12306
查看>>
github上搭建hexo博客
查看>>
zepto $.ajax()返回的XHR对象 promise接口总结
查看>>
bootstrap - panel + collapse + accordion + well
查看>>
JavaScript简单分页,兼容IE6,~3KB
查看>>
如何进行页面优化?
查看>>
【二次元的CSS】—— 纯CSS3做的能换挡的电扇
查看>>
使用ossaudiodev播放音频
查看>>
浅析JVM之内存管理
查看>>
CoreData整理(一)——基本概念与简单使用
查看>>
利用Python调用HBASE
查看>>
python socket编程之基本流程
查看>>
mysql字符乱码
查看>>
Mysql之一:mysqldump和LVM逻辑卷快照
查看>>
JAVA之带转义字符的json字符串解析
查看>>
Mac上搭建Xcode9.0+appium1.6.5过程及链接模拟器测试app
查看>>
Linux常用命令和快捷键
查看>>