JavaScript对象原型链原理详解


Posted in Javascript onFebruary 05, 2020

这篇文章主要介绍了JavaScript对象原型链原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一个js对象,除了自己设置的属性外,还会自动生成proto、class、extensible属性,其中,proto属性指向对象的原型。

对象的属性也有writable、enumerable、configurable、value和get/set的配置方法。

JavaScript对象原型链原理详解

对象的创建方式有三种:

一、使用字面量直接创建。

二、基于原型链创建。

JavaScript对象原型链原理详解

分析上图,要点如下:

1.可以new运算符新建对象,foo为自定义函数,即是对象。

2.可以设置foo.prototype上的属性。

3.变量z在原型链上,为foo.prototype的属性,并非obj的自有属性。

4.原型链为obj->foo.prototype->Object.prototype->null。

JavaScript对象原型链原理详解

分析上图,要点如下:

1.若定义与原型链上同名的变量,则不会覆盖原型链上的变量,而是在对象本身新增副本。

2.delete运算符不会影响原型链上已有的变量,只会删除对象自身的属性。

三、使用Object.create创建。

JavaScript对象原型链原理详解

分析上图,要点如下:

1.Object.create是基于传入的参数产生新的对象,并且入参会成为其原型链上的一部分。

2.Object.create(null)创建的对象直接指向null。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript异步编程的4种方法让你写出更出色的程序
Jan 17 Javascript
用js一次改变多个input的readonly属性值的方法
Jun 11 Javascript
javascript实现的HashMap类代码
Jun 27 Javascript
推荐10 款 SVG 动画的 JavaScript 库
Mar 24 Javascript
基于Bootstrap3表格插件和分页插件实例详解
May 17 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
Apr 25 Javascript
javascript使用正则实现去掉字符串前面的所有0
Jul 23 Javascript
详解webpack模块加载器兼打包工具
Sep 11 Javascript
vue+element模态框中新增模态框和删除功能
Jun 11 Javascript
javascript实现超好看的3D烟花特效
Jan 01 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
Feb 03 Javascript
vue制作抓娃娃机的示例代码
Apr 17 Javascript
基于Vue的侧边目录组件的实现
Feb 05 #Javascript
Js视频播放器插件Video.js使用方法详解
Feb 04 #Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
Feb 04 #jQuery
JS代码优化的8点建议
Feb 04 #Javascript
9种方法优化jQuery代码详解
Feb 04 #jQuery
JS代码检查工具ESLint介绍与使用方法
Feb 04 #Javascript
使用typescript改造koa开发框架的实现
Feb 04 #Javascript
You might like
PHP中for循环语句的几种变型
2006/11/26 PHP
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP与以太坊交互详解
2018/08/24 PHP
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
Bootstrap整体框架之JavaScript插件架构
2016/12/15 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
Unicode和Python的中文处理
2017/03/19 Python
Python 网页解析HTMLParse的实例详解
2017/08/10 Python
Django权限机制实现代码详解
2018/02/05 Python
Numpy之文件存取的示例代码
2018/08/03 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
如何理解python面向对象编程
2020/06/01 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
python中time tzset()函数实例用法
2021/02/18 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
跟单文员的岗位职责
2013/11/14 职场文书
拉拉队口号
2014/06/16 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
毕业典礼邀请函
2015/01/31 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
Golang 空map和未初始化map的注意事项说明
2021/04/29 Golang
mysql timestamp比较查询遇到的坑及解决
2021/11/27 MySQL