当前位置: 首页 > news >正文

构造函数(constructor)与原型链(prototype)关系

在Javascript中不存在class的概念,它的class概念是通过构造函数(constructor)与原型链(prototype)来实现。

1.构造函数(constructor):创建对象时的初始化对象,总是与new 关键是一同出现。

构造函数存在以下特点:
    1、构造函数内的this 指向当前实例对象。
    2、使用new 关键字实例化当前对象。
    3、构造函数首字母大写,区分普通函数。
    4、实例对象都可以继承构造函数中的属性和方法。但是,同一个对象实例之间,无法共享属性。
    
    

2.原型(prototype):是一个对象,实现对象的属性继承。javascript 中的对象通过 proto 来指向原型对象,可以通过Object.__proto__ 来访问

3.构造函数与与原型的联系:

   <script>
   function  Demo(){
            
     }
     var demo = new Demo()
     var  data= demo.prototype = function(){

     }
    
     console.log(demo.__proto__)
     console.log(data.constructor )
     console.log(data.prototype.__proto__)
     console.log(demo.constructor.prototype)
     console.log(demo.constructor)
    输出:
    {constructor: ƒ}constructor: ƒ Demo()__proto__: Object
    ƒ Function() { [native code] }
    {constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}
    {constructor: ƒ}
    ƒ Demo(){    }
</script>

从以上输出结果可以看出:

   构造函数的 __proto__ 指向原型对象;
     原型的constructor 指向构造函数Function;
     原型的 prototype.__proto__  等于 Object.__proto__;
     实例 的 constructor.prototype 指向原型;
     实例的constructor 指向构造函数
   
   
   
   
引用图例:
![1460000018155881][1]
 

相关文章:

  • css3省略……
  • ASP.NET MVC从视图传参到控制器的几种形式
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • 前端性能优化--懒加载和预加载
  • 如何封装使用api形式调用的vue组件
  • 小白修神传~程序员成神之路
  • 26、springboot与消息
  • Javascript基础之Array数组API
  • redhat6.4提权Ⅱ
  • 运算符和自增自减
  • ☆1033
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • linux下实用的快速随机生成复杂密码
  • 互联网世界,联通你我,这40张图送给你!让你笑到肚子疼!
  • WinDbg 命令三部曲:(二)WinDbg SOS 扩展命令手
  • 【译】JS基础算法脚本:字符串结尾
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Electron入门介绍
  • express如何解决request entity too large问题
  • flask接收请求并推入栈
  • Git的一些常用操作
  • JAVA并发编程--1.基础概念
  • Vultr 教程目录
  • 聚类分析——Kmeans
  • 前端面试之CSS3新特性
  • 使用 @font-face
  • 项目管理碎碎念系列之一:干系人管理
  • 学习使用ExpressJS 4.0中的新Router
  • 译自由幺半群
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 追踪解析 FutureTask 源码
  • ionic入门之数据绑定显示-1
  • ​Linux·i2c驱动架构​
  • ![CDATA[ ]] 是什么东东
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • ${factoryList }后面有空格不影响
  • $GOPATH/go.mod exists but should not goland
  • (4)STL算法之比较
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (九十四)函数和二维数组
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)linux 命令大全
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET Core 2.1路线图
  • .NET 事件模型教程(二)
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调