
【原型和原型链】什么是原型和原型链
发布日期:2021-05-08 07:48:14
浏览次数:17
分类:精选文章
本文共 1029 字,大约阅读时间需要 3 分钟。
一、原型
①所有引用类型
都有一个__proto__(隐式原型)
属性,属性值是一个普通的对象
函数
都有一个prototype(原型)
属性,属性值是一个普通的对象 ③所有引用类型的__proto__
属性指向
它构造函数的prototype
var a = [1,2,3];a.__proto__ === Array.prototype; // true
二、原型链
当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链。
举例,有以下代码function Parent(month){ this.month = month;} var child = new Parent('Ann');console.log(child.month); // Ann console.log(child.father); // undefined
在child中查找某个属性时,会执行下面步骤
:
访问链路
为:
①一直往上层查找,直到到null还没有找到,则返回undefined
Object.prototype.__proto__ === null
③所有从原型或更高级原型中的得到、执行的方法,其中的this在执行时,指向当前这个触发事件执行的对象
每一个对象数据类型(普通的对象、实例、prototype
......)也天生自带一个属性__proto__
,属性值是当前实例所属类的原型(prototype
)。原型对象中有一个属性constructor
, 它指向函数对象。
function Person() {} var person = new Person() console.log(person.__proto__ === Person.prototype)//true console.log(Person.prototype.constructor===Person)//true //顺便学习一个ES5的方法,可以获得对象的原型 console.log(Object.getPrototypeOf(person) === Person.prototype) // true
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年03月21日 08时17分20秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
(九)实现页面底部购物车的样式
2021-05-08
python-day3 for语句完整使用
2021-05-08
基于LabVIEW的入门指南
2021-05-08
weblogic之cve-2015-4852
2021-05-08
Java注释
2021-05-08
C++ 函数重载
2021-05-08
使用mybatis-generator生成底层
2021-05-08
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2021-05-08
计算输入的一句英文语句中单词数
2021-05-08
lvs+keepalive构建高可用集群
2021-05-08
6 个 Linux 运维典型问题
2021-05-08
取消vim打开文件全是黄色方法
2021-05-08
一个系统部署多个tomcat实例
2021-05-08
HP服务器设置iLO
2021-05-08
从头实现一个WPF条形图
2021-05-08
使用QT实现一个简单的登陆对话框(纯代码实现C++)
2021-05-08
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
2021-05-08
GLFW 源码 下载-编译-使用/GLAD配置
2021-05-08
针对单个网站的渗透思路
2021-05-08