首先声明:

1.在JS里,万物皆对象。方法(Function)是对象,方法的原型(Function.prototype)是对象。因此,它们都会具有对象共有的特点。即:对象具有属性proto,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法。

2.方法(Function)方法这个特殊的对象,除了和其他对象一样有上述proto属性之外,还有自己特有的属性——原型属性(prototype),这个属性是一个指针,指向一个对象,这个对象的用途就是包含所有实例共享的属性和方法(我们把这个对象叫做原型对象)。原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指回原构造函数。

1.1首先声明一个对象和一个函数,console.log一下对象和函数的proto

var A = function () {};
var B ={};console.log(A.__proto__)
console.log(B.__proto__)

控制台输出结果如下图所示:

proto

刚才不是说函数是对象吗?它们的proto为啥不一样?往下看,别着急。

var A = function () {};
var B ={};
console.log(A.__proto__.__proto__)
console.log(B.__proto__)

console.log结果如下:

image.png

是不是一样了,,确实有点懵逼啊。。重点 隐式原型指向构造该对象的构造函数的原型。因为function是特殊的对象,A.proto就指向了构造该函数的一个函数(随意起个名字 C),C的proto就指向了和B对象一样的proto。。我自己都懵逼了。

1.2一个对象和一个函数,console.log一下对象和函数的prototype

var A = function () {};
var B ={};
console.log(A.prototype)
console.log(B.prototype)

console.log结果如下:

image.png

对象并不具有prototype属性,只有函数才有prototype属性。这就证明声明2的说法是正确的。

总结:

  1. js里所有的对象都有proto属性(对象,函数),指向构造该对象的构造函数的原型。
  2. 只有函数function才具有prototype属性。这个属性是一个指针,指向一个对象,这个对象的用途就是包含所有实例共享的属性和方法(我们把这个对象叫做原型对象)。原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指回原构造函数。

_poto_和prototype的问题续集相关推荐

  1. js中的_poto_和prototype的问题

    初学javascript的时候也跟题主一样搞不清楚,自己好好总结了一下: 首先,要明确几个点: 1.在JS里,万物皆对象.方法(Function)是对象,方法的原型(Function.prototyp ...

  2. python学习 day51之js续集

    JavaScript续集 数组对象Array .length 数组的大小 .push() 尾部追加元素 .pop() 获取尾部的元素 .unshift() 头部插入元素 .shift() 头部移除元素 ...

  3. 【Spring】bean的作用域(@Scope) - singleton、prototype

    已知spring 3+已拥有多种不同的作用域: singleton(默认).prototype.request.session.global session.(参考: spring中scope作用域( ...

  4. 细心看完这篇文章,刷新对Javascript Prototype的理解

    var person={name:'ninja'}; person.prototype.sayName=function(){return this.name; } 分析上面这段代码,看看有没有问题? ...

  5. 几个比较冷门的prototype扩展方法:去掉html标签、去掉a标签、去掉style样式,以及判断是否为html代码的代码片段

    /*去掉html标签(真正意义上去掉所有html标签包括内嵌的css样式)*/ String.prototype.stripHTML = function (isRemoveNewLine) {var ...

  6. javascript数组排序和prototype详解

    原型的概念::原型对象里的所有属性和方法 被所有构造函数实例化出来的对象所共享,类似于java中的 static 正因为共享所以单一的操作 就会影响了全局,因此使用时需注意 基于prototype:为 ...

  7. 设计模式之C#实现---- ProtoType

    作者: cuike519的专栏   http://blog.csdn.net/cuike519/ 该模式的意图是:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.那么首先我们应该已经有 ...

  8. 设计模式之原型模式(Prototype)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.FactoryMethod(工厂方法模式):2.Abstract Factory(抽象工厂模式):3.Sin ...

  9. JS 面向对象编程之原型(prototype)

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. function Person(first, last) {this.first = first;this.l ...

最新文章

  1. linux系统文件保存后恢复,linux系统文件误删恢复
  2. 找不到具有指定ID的对话框类解决方法
  3. 东华大学java_东华大学2020秋《Java程序设计》期末大作业
  4. 无线AP与无线交换机的区别
  5. C++中三种正则表达式比较(C regex,C ++regex,boost regex)
  6. hh.exe反汇编chm
  7. 让你的手机浏览器来一场AR风暴
  8. KindEditor js 路径修改及表单提交注意事项
  9. 遗传算法经典实例代码_经典算法研究系列 之 深入浅出遗传算法
  10. Ubuntu安装常用软件
  11. 化学人学python有前途吗-用Python解析化学公式
  12. 科研热点|官宣!2022年JCR分区和影响因子发布时间确定!
  13. Uchome分页方法
  14. 《创业维艰》:如何完成比难更难的事
  15. 踩坑之路---JWT验证
  16. 三相桥式全控整流电路simulink仿真_变频器为什么要整流?整流的原理是什么?...
  17. Mac下安装DBeaver
  18. Matlab求解李雅普诺夫(Lyapunov)方程
  19. c++游戏服务器框架
  20. 《惢客创业日记》2021.01.27-31(周三)顾耀东傻吗?

热门文章

  1. 基于android端计步器软件的尝试
  2. word柱状图垂直轴数值设定_Excel图表中设置坐标轴的字体、图案格式、刻度格式和数字格式的方法...
  3. 计算机d盘无法格式化,电脑D盘无法格式化怎么办
  4. Atmel ATSAMV70Q20 的 CAN 扩展帧收发设置
  5. 前端小白Day6-仿照百度制作登录界面
  6. vue实现移动端在线预览pdf
  7. Hbase-2.0.5
  8. 赛宁网安合作伙伴大会成功举办,重磅发布SCBaaS服务!
  9. 计算机毕业设计如何制作电子商务网站怎么制作购物网站计算机课程设计电子商城做什么(PHP-ASP.NET-c#-JavaWeb-SSM-SSH-J2EE-springBoot
  10. 如何查看Dell笔记本型号?