首页 > 其他分享 >js原型和原型链

js原型和原型链

时间:2022-11-27 20:55:22浏览次数:47  
标签:proto drink js 原型 Student 属性

目录

原型和原型链

原型

在理解之前,明白一个前提,js也是有类的,也可以定义方法和构造函数
隐式原型:对象的_proto_属性(里面有类定义的方法,且这个属性每个对象都有)
显式原型:Student.prototype
其中,Student.prototype和student._proto_完全相等

原型链

理解之前,有一个前提,Student继承自Person,且Person有一个方法:drink
访问student对象的属性或方法,例如drink,先从自身去找(类似java成员变量与原型同级),如果找不到就去自己的原型上找,如果还找不到,就会往原型的原型上去找(找到drink),这样就会有一个链式的结构,叫原型链。请将下图的teacher换成student顺逻辑:

ps:

  1. 其实最终会到Object类(有点像java),这个类有一个hasOwnProperty方法判断属性或方法(应该只有属性,因为方法在原型中)是不是本身拥有的(不是本身拥有就是在原型中),如果是,返回true,否则false
  2. Object的_proto_再往上没有了嘛,所以是null

标签:proto,drink,js,原型,Student,属性
From: https://www.cnblogs.com/xxg98/p/16930606.html

相关文章

  • jquery009-js执行的先后顺序
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><bodystyle="width:980px;margin:0auto"><h1>#一,当页面框架......
  • leetcode 56. 合并区间 js实现
    以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i]=[starti,endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入......
  • vs2008 调试js
    面对一大段的JavaScript脚本,以前总是会很头疼,找不到调试这些代码的方法。如果出现什么错误或异常,总是要从头分析,然后插入很多Alert(),调试起来很麻烦。VisualStudio2008中J......
  • 解决fastjson内存对象相互应用导入json字符串出现错误问题
        日常在使用FastJson的时候可能很少会遇到这种问题。比如:我们在一个对象中存在一个集合属性对象这个集合属性对象元素属性也同样存在集合属性那么在使用toJSONSt......
  • 基于Servlet+jsp+mysql开发javaWeb学生管理系统(学生信息、学生选课、学生成绩、学生
    你知道的越多,你不知道的越多点赞再看,养成习惯文章目录​​一、开发背景​​​​二、需求分析​​​​三、开发环境​​​​四、运行效果​​​​五、开发流程​​​​工......
  • JS - 监听手机横屏竖屏
    //监听屏幕window.addEventListener('orientationchange',function(){letorientation=window.orientation;consol......
  • moment.js 处理时间日期的库
    vue项目中,需要把moment.js挂载到全局上(即vue的原型链上),访问时直接使用this.moment();vue项目中不挂载到全局,单文件(单组件)使用:==>>importmomentfrom"moment";......
  • 《vue.js设计与实现》笔记(1~4章)
    以下内容均来自本书第1章命令式编程与声明式编程关注结果(声明式)和关注过程(命令式)运行时和编译时(vue、react、svelte)坐火车时,进站检票(编译时)和上车检票(运行时)框架性......
  • Nodejs简单方式安装至centos
    1.官网 下载编译好的包官网下载:下载|Node.js中文网(nodejs.cn)cd/usr/localwgethttps://npmmirror.com/mirrors/node/v16.18.1/node-v16.18.1-linux-x64.tar.xz......
  • 野花--js中使用+实现转换成字符串的小注意
    在使用C3的transform时出现的一个问题:this.style.transform='translateX('+boxLeft+e.targetTouches[0].pageX-startX+'px)';这个并没有出现我预料的结果变成......