• prototype

每个函数都有一个prototype属性被称为显示原型

  • _ proto _

  • 每个实列对象都会有——proto——属性被称为隐式原型
  • 没一个实列对象的隐式原型-- proto--属性指向自身构造函数的显示原型prototype
  • constructor

每个prototype都有一个constructor属性指向它关联的构造函数

原型链

获取对象属性是,如果对象本身没有这个属性,那就会去找他的原型--proto--上去寻找,如果还找不到就去找原型的原型,一直找到object.prototype为止。object.prototype对象也有--proto--属性值未null

object是属于原型链的顶层,所有构造函数的prototype都指向object.prototype

演示实列

function Fun(){}
//            我创造了一个函数Fn
//            这个函数由Function生成(Function作为构造函数)var fn=new Fun()
//            我创建了一个函数fn
//            这个函数由构造函数Fun生成console.log(fn.__proto__===Fun.prototype)    //true
//            fn的__proto__指向其构造函数Fun的prototypeconsole.log(Fun.__proto__===Function.prototype)        //true
//            Fun的__proto__指向其构造函数Function的prototypeconsole.log(Function.__proto__===Function.prototype)    //true
//            Function的__proto__指向其构造函数Function的prototype
//            构造函数自身是一个函数,他是被自身构造的console.log(Function.prototype.__proto__===Object.prototype)    //true
//            Function.prototype的__proto__指向其构造函数Object的prototype
//            Function.prototype是一个对象,同样是一个方法,方法是函数,所以它必须有自己的构造函数也就是Objectconsole.log(Fun.prototype.__proto__===Object.prototype)         //true
//             与上条相同
//             此处可以知道一点,所有构造函数的的prototype方法的__都指向__Object.prototype(除了....Object.prototype自身)console.log(Object.__proto__===Function.prototype)        //true
//            Object作为一个构造函数(是一个函数对象!!函数对象!!),所以他的__proto__指向Function.prototypeconsole.log(Object.prototype.__proto__===null)        //true
//            Object.prototype作为一切的源头,他的__proto__是null//            下面是一个新的,额外的例子var obj={}
//            创建了一个objconsole.log(obj.__proto__===Object.prototype)        //true
//            obj作为一个直接以字面量创建的对象,所以obj__proto__直接指向了Object.prototype,而不需要经过Function了!!//            下面是根据原型链延伸的内容
//            还有一个上文并未提到的constructor,  constructor在原型链中,是作为对象prototype的一个属性存在的,它指向构造函数(由于主要讲原型链,这个就没在意、);console.log(obj.__proto__.__proto__===null)        //trueconsole.log(obj.__proto__.constructor===Object)        //trueconsole.log(obj.__proto__.constructor.__proto__===Function.prototype)        //trueconsole.log(obj.__proto__.constructor.__proto__.__proto__===Object.prototype)    //trueconsole.log(obj.__proto__.constructor.__proto__.__proto__.__proto__===null)        //trueconsole.log(obj.__proto__.constructor.__proto__.__proto__.constructor.__proto__===Function.prototype)    //true

学习只是为了生存,摸鱼才是人生

1、“大爷,我现场采访您一下,您这样晨跑锻炼坚持几年了?”

“姑娘别挡道!我尿急! ”
2、“请问你是做什么工作的?”

“哦。我的工作是杀僵尸。”
“嗯?可是这个世界上没有僵尸啊! ”
“你以为它们是怎么没有的?”
3、中午去买菜,感觉都不太新鲜了。

老板:早上刚到的,都新鲜的。
我:这菜看着就蔫蔫的啊?!
老板:从早上到现在,它以为没人要自己了,这不垂头丧气么!
我。。。
4、我问他:你今天怎么没上班儿啊?

表弟:那大舌头老板说,让我上班的时候,顺路捎十块钱的“砂纸”,结果我听成了“烧纸”
我:那也不至于开除你啊
表弟又说:老板看我买错了,让拿出去扔了,我跟他说,留着吧,万一再用上呢?
5、周末,我和男友还有闺蜜一起乘地铁,人很多,

我在男友身后,闺蜜在男友前面,我脑子一抽,伸手在闺蜜臀部掐了一下,
闺蜜回头含情脉脉的看了我男友一眼,然后往男友身边靠近了些!
对着中间来了一脚,拉着我跑了,
留下男友在风中哀嚎

js的爬山之路原型与原型链~~狂徒李四相关推荐

  1. js爬山之作用域和自由变量~~狂徒李四

    作用域的种类 全局作用域 js中最外层 的作用域就是全局作用域 函数作用域 js中可以通过函数来创建一个独立作用域称为函数作用域,函数可以嵌套,所以作用域也可以嵌套: 块级作用域(es6新增) es6 ...

  2. 浅谈JS原型与原型链(一)

    最近学习JavaScript原型与原型链的时候,被这块知识烧得脑壳疼,prototype与__proto__混淆不清.网上各种图解,都画的好复杂,绕老绕去,不明所以,看得越来越糊涂.还是亲自动手敲敲, ...

  3. JS原型与原型链终极详解

     一. 普通对象与函数对象   JavaScript 中,万物皆对象!但对象也是有区别的.分为普通对象和函数对象,Object ,Function 是JS自带的函数对象.下面举例说明 functi ...

  4. js原型和原型链_重学js --原型与原型链

    一.什么是原型: .每个对象都有一个__proto__属性,并且指向它的prototype原型对象 每个构造函数都有一个prototype原型对象 prototype原型对象里的constructor ...

  5. js原型和原型链_JS里的原型和原型链

    JS里的原型与原型链 原型 原型和原型链的目的是解决构造函数生成的对象内共同属性重复生成的问题,使其更高效.在下面这个例子里每次生成一个实例对象都要生成一个mmm方法,没有必要,完全可以共享. 构造函 ...

  6. (五)JS基础知识二(通过图理解原型和原型链)【三座大山之一,必考!!!】

    JS基础知识二(原型和原型链) 提问 class 继承 类型判断(instanceof) 原型 原型关系 基于原型的执行规则 原型链 说明 提问 如何准确判断一个变量是不是数组 class的原型本质 ...

  7. 最详细的讲解 JS 原型与原型链

    文章目录 一. 普通对象与函数对象 二. 构造函数 三. 原型对象 四. proto 五. 构造器 六. 原型链 七. Prototype 总结 一. 普通对象与函数对象 JavaScript 中,万 ...

  8. js原型、原型链、作用链、闭包全解

    https://www.2cto.com/kf/201711/698876.html [对象.变量] 一个对象就是一个类,可以理解为一个物体的标准化定义.它不是一个具体的实物,只是一个标准.而通过对象 ...

  9. js原型和原型链_理解JS中的原型和原型链

    导读:JavaScript中(JS)的原型和原型链是web前端开发面试中经常被问到的问题:同时,如果我们能很好的理解JS中的原型和原型链,对于控制台输出的很多信息我们也能更好的理解,而原型链也是实现继 ...

最新文章

  1. Daily Storm - 31/10/12
  2. sdut 3333 数据结构实验之栈与队列六:下一较大值(二)
  3. Generate Parentheses
  4. 前台如何解析json格式 以及后台如何生成json格式
  5. linux系统管理试卷必修B卷,2013-2014Linux系统管理试卷
  6. python中的所有功能_python – 是否可以列出模块中的所有功能?
  7. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第13篇]概述投影点表达的用途的优点
  8. 北京活动预告丨来ACOUG 年会过个温暖的冬天吧!
  9. Abp vnext Web应用程序开发教程 7 —— 作者:数据库集成
  10. mysql的binary安装
  11. Windows系统命令整理-Win10
  12. Nodejs gRPC client 使用typescript
  13. 第七次人口普查数据可视化---pyecharts
  14. WPS简历模板的图标怎么修改_最新8000套设计师面试作品集:模板+插画+海报+图标+简历...
  15. window窗口切换快捷键
  16. python中写公式_使用Python书写的公式编辑器
  17. 解决Ubuntu DVD 用wubi 安装时候要重新下载镜像的笨方法
  18. 动画骨骼【Visual C++】游戏开发五十二 浅墨DirectX教程二十 骨骼动画来袭(一)...
  19. 复变函数不挂科——3小时学完复变函数与积分变换(猴博士复变函数学习笔记1)
  20. 没有免费的午餐理论 No Free Lunch Theorem

热门文章

  1. Android11.0(R) MTK 预置可卸载app恢复出厂不恢复(仿RK方案)
  2. is not backed by gradle android,Module … is not backed by gradle
  3. backup archivelog all not backed up
  4. 一键还原涂鸦图片_涂鸦的图片可以复原吗
  5. unity3d shader之God Ray上帝之光
  6. 小锤子要出来?老罗傲娇属性不再
  7. sqlserver 联接查询的一些注意点
  8. 小米台灯、小米插线板 接入Home Assistant平台 让天猫精灵音箱控制
  9. Python用tushare库获取股票数据批量存入mysql成功
  10. linux dd创建大文件模拟磁盘不足监控