构造函数 原型链

Quartus II设计程序计数器PC、由PC产生ROM的地址(含仿真) 设计程序计数器PC,正常工作模式下,系统启动,设置PC的初始值,之后每来一个clk,PC的输出值应该增加1;当程序发生跳转时,PC的值应该发生改变,级将跳转的地址值赋进行输出。PC后端连接一个ROM,由PC来产生ROM的地址,仿真进行验证。 阅读详情

1、构造函数是什么     (拓展)

        通过  new 函数名    来实例化对象的函数叫构造函数。任何的函数都可以作为构造函数存在。之所以有构造函数与普通函数之分,主要从功能上进行区别的,构造函数的主要 功能为 初始化对象,特点是和new 一起使用。new就是在创建对象,从无到有,构造函数就是在为初始化的对象添加属性和方法。构造函数定义时首字母大写(规范)。我们可以把对象中的一个公共属性和方法抽离出来,然后封装到这个函数里面去。(构造函数和new一起使用才有意义)
        所谓的构造函数其实就是一个普通的函数前面加了new运算符,其实质也是一个函数,所以构造函数都有函数的prototype属性。

 
    // 构造函数的目的:创建对象
    // 学生类→ 构造函数
    function Student(name,age,gender) {
      // 属性
      this.name = name;
      this.age = age;
      this.gender = gender;
      // 方法
      this.writeCode = function() {
        console.log('我会写代码')
      };
      this.sayHi = function(){
        // 方法内部中this,代表的是调用方法的对象
        console.log('我叫' + this.name + ',今年' + this.age);
      };
    }
    
    // 创建对象
    var zs = new Student('张三',10,'男');

new 关键字的执行过程

​  1. new关键字,创建一个空的简单JavaScript对象(即{},一片空间);

​  2. 进入构造函数内部,this关键字会指向内存中创建的那个对象(new关键字创建的)

​  3. 通过this向内存中的对象中添加属性和方法

​  4. 最终把this返回给外部接收的变量zs,即返回this

2、实例是什么
        实例就是通过构造函数创建出来的对象。

    <script>
      var M = function() {
        this.name = "Jane";
      };
      var obj = new M();
      console.log (obj);    //M {name: "Jane"}
    </script>

3、原型是什么
        原型指的就是原型对象,至于是谁的原型对象,需要靠函数的prototype属性和实例的__proto__属性来区别。
4、原型链是什么
        指从一个实例对象开始往上找,这个实例对象的__proto__属性所指向的则是这个实例对象的原型对象,如果用obj表示这个实例,则原型对象表示为obj.__proto__。同时,这个原型对象顾名思义也是一个对象,而且它也有上一级的原型对象,相对于上一级原型对象而言,它也是一个实例对象,那么它也拥有__proto__属性,它的__proto__属性也指向它的原型对象,后面也以此类推,一直到Object.prototype这个原型为止,Object.prototype为原型链的末尾点。

        通过上图第一个红色框出来的属性可看到,obj通过调用两次__proto__属性就已经到达Object,Object是一个构造函数,Object拥有属性prototype,可以指向它的原型。第三次调用的时候已经返回空,表明Object.prototype为原型链的末端。

5、构造函数与实例之间的关系
        如前所述,实例是通过构造函数创建
6、构造函数与原型(对象)之间的关系
        构造函数通过其属性prototype去寻找它关联的原型,如果用M表示构造函数,M.prototype所指的就是它关联的原型对象,而原型对象可以通过构造器constructor来寻找与自身关联的构造函数,所以就有M.prototype.conctructor===M。

7、实例与原型之间的关系
        其实在前面的原型链解释那里就说了实例与原型之间的关系,但是这里也还是赘述一下,因为等下5、6、7点结合来谈。很简单,就一句话可以概括,实例通过它的__proto__属性去寻找它关联的原型对象,所以原型对象又可以表示为obj.__proto__。若用obj.__proto__=obj关联的原型对象,而结合第6点,M.prototype=M关联的原型对象,又因为第5点,obj是M创建的,所以obj关联的对象就是M关联的对象(其实这里可用instanceof来判断实例与构造函数是否引用同一地址,事实是引用了同一地址。后面第9点会讲到instanceof),最终,obj.__proto__===M.prototype为true。这在控制台可验证。

8、原型对象上的属性、方法可以被实例共享,原因看代码演示
                var M = function (name) {
            this.name = name
        } 
        //构造函数原型对象上定义属性和方法
        M.prototype.country = 'US'
        M.prototype.say=function(){
            console.log("hhh")
        }
        var obj1 = new M('Jane')
        var obj2 = new M('Tom')

        两个同一构造函数的不同实例,可以调用原型对象上的属性和方法,值都一样,所以控制台返回true。

9、instanceof的原理
        首先,通过instanceof能做什么呢?instanceof可以判断实例对象的__proto__属性是否与构造函数的prototype属性指向同一地址,是的话返回true,否则fasle。
        而原型对象上还有上一级的原型对象,上一级原型对象也有对应的构造函数,事实上,实例的__proto__属性与在原型链上的所有构造函数的prototype属性都指向同一个地址,所以有如下的结果。


        需要注意的是,虽然instanceof判断的是实例属性与函数属性的指向问题,但是在使用的时候要注意instanceof 左边是实例,右边是构造函数。

        一句话概括就是用实例对象来判断构造函数与原型对象的构造函数。

10、构造器constructor
        但是想找到与实例直接相关联的构造函数就得用构造器constructor了。使用方法是先通过实例的__proto__属性找到原型对象,再通过原型对象的属性constructor来确定构造函数。

Claude Code(7):从零创建你的第一个 Skill 在前面的文章,我们介绍了 Skills 的基本概念,这篇我们深入实战,从零开始创建你的第一个 Skill,并逐步解锁所有配置项,让 Claude Code 真正熟悉你的测试规范和习惯。 阅读详情

相关推荐

昆仑通态屏幕制作(连载1)---接触篇

写在开始 背景:最近出了做QT、LORA和4G,还做了一个屏幕。以前做了一个迪文的串口屏幕,发现网上的教程很多,所以连载就不更新了,并且迪文屏幕的设置什么的比较简单,应该从网上都能找到对应的教程。而现在用的昆仑通态的屏幕属于嵌入式屏幕,至于为啥叫嵌入式,也不是很明白,反正就是需要用这个屏幕,嵌入式不嵌入式不重要了。重要的是能用,并且能实现串口屏幕不能实现的功能。所以选定昆仑通态的一款屏幕。 文章语言:我比较习惯用比较糙的语言介绍做的东西,有时候不太准备,但是为了方便理解,还请大家谅解。用...

weixin_45426095的博客 6736

构造函数、实例、原型、原型链之间的关系

1、构造函数是什么 所谓的构造函数其实就是一个普通的函数前面加了new运算符,其实质也是一个函数,所以构造函数都有函数的prototype属性。2、实例是什么 实例就是通过构造函数创建出来的对象。                    var M = function () { this.name = 'Jane'                     }                ...

yin_991的博客 8358

【四旋翼】pixhawk2.4.8-地面站配置-APM固件-四旋翼从装机到试飞

因为MP版本和APM版本的适配问题,真的真的是很大一个坑。最好先走别人走过的路,走通了再去自由发挥,不然白白浪费时间。下面提供我试飞成功过的版本。下面提供任意版本固件和地面站的下载方法。

xifan的博客 3万+

Java杂谈之构造函数链

Java的构造函数链: 构造函数

你为什么不努力的专栏 3469

告别MATLAB依赖:手把手教你用Python实现GCC-PHAT时延估计(附完整代码与对比测试)

本文详细介绍了如何使用Python实现GCC-PHAT时延估计算法,替代传统的MATLAB依赖。通过完整的代码示例和性能对比测试,展示了Python在信号处理领域的强大能力,特别是在广义互相关和TDOA应用中的高效实现。文章还提供了实时音频处理和嵌入式部署的实用技巧,帮助工程师快速掌握这一关键技术。

weixin_42667269的博客 220

地震勘探原理---地震预处理

3.1 为什么说要对数据进行振幅补偿?具体来说,地震波在传播过程中会遇到各种各样的地质条件,例如不同的岩层、土壤、水层等,这些介质的密度、速度等特性不同,因而对地震波的能量消耗也有所不同。在传播距离较远的情况下,能量损失可能会导致接收到的地震信号振幅变小。相反,在传播距离较近的情况下,能量损失可能较小,导致接收到的地震信号振幅变大。如果不对数据进行振幅补偿,这种振幅不均衡会导致地震数据分析和解释的误差和不确定性增加,可能产生错误的结论。

DARRENANJIAN的博客 3272

构造函数、实例和原型对象的理解

构造函数、实例和原型对象的理解主要介绍: 实例成员和静态成员 构造函数原型对象prototype 对象原型__proto__ 原型constructor构造函数 构造函数、实例和原型对象三者之间的关系 一、实例成员和静态成员 构造函数中的属性和方法我们称为成员,成员可以添加 成员分为:实例成员 和 静态成员 实例成员就是构造函数内部通过this添加的成员uname age sing 就是实例...

艾小逗 1590

GX Works2系统启动失败排查指南:从环境配置到修复方案

在工业自动化与PLC编程调试中,软件启动异常是常见的工程痛点。当开发工具因系统环境配置不当而频繁报错时,往往不是简单的重启能解决的。运行库缺失、区域设置错误、临时目录失效或系统服务被禁用,都可能导致编程软件无法完成初始化流程。掌握从基础环境检查到系统组件修复的系统性排查思路,是提升工控开发效率的关键能力。本文从软件初始化原理出发,结合Windows系统维护实践,梳理一套适用于工业软件启动故障的通用诊断方法,并自然聚焦到三菱GX Works2常见启动失败问题的实际处理,帮助工程师快速定位并解决环境性故障,保障

weixin_42567046的博客 458

什么是构造函数?什么是实例?为什么说属性在构造函数中声明,方法在原型中声明?

什么是构造函数,什么是实例 构造函数是对一个实例的一个描述 构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。 function Person (name){ this.name = name; }...

你若盛开,清风自来 2137

乐鑫WIFI芯片开发流程梳理-工具链、编译和下载

最近开始基于乐鑫ESP32的WIFI模组的软件开发,首先要做整套流程的梳理,乐鑫官网以及安信可上已经有了较为系统的资料,但是在实现过程中也遇到了一些问题,花了几天去解决,所以为了总结,也为了给其他人提供一些借鉴,把流程分享一下,官网上相对比较完善的,就不在赘述。 1. 开发方案选择 目前网上有两套较为成熟的方案: (1)基于乐鑫官网推荐的开发方式,原网页:https://docs.espress...

一名嵌入式软件工程师的自我成长 3926

Python 爬虫实战:Boss直聘 Python 岗位招聘数据爬取

本文介绍了一个Python爬虫项目,用于抓取Boss直聘平台的Python岗位招聘数据并进行可视化分析。项目采用requests库发送POST请求,通过抓包分析获取JSON接口,绕过HTML解析直接获取结构化数据。主要内容包括: 接口分析:找到关键POST接口,解析请求头和JSON参数格式 环境准备:安装requests/pandas/matplotlib/pyecharts等依赖库 核心实现: 手动获取登录Cookie 构建请求头和城市代码映射 实现分页抓取职位列表数据 项目特色在于直接解析JSON接口而

u014481728的博客 296

构造函数、原型和原型链

对构造函数、原型以及原型链的详解和三者的关系阐述,帮你清晰的理清有关原型的知识点

LUZENG_SA的博客 830

金属表面粗糙度对信号的影响

之前的文章中,已经采用CST中的微带线模块进行了很多的仿真分析,本文将再次利用这些模块,从另外一个角度去探讨关于传输线的使用问题--金属的表面粗糙度。 众所周知,数据传输中,当速率越来越高时,信号在金属介质中的趋肤效应就愈发明显,能量就会更多地集中于金属的表面进行流动,此时,如果金属表面不再光滑而是凹凸不平,能量的传输过程就会产生波动,当这种波动积累到一定的量级,就会严重影响到传输线的阻抗稳定性,从而导致信号失真和传输异常。

一只豌豆象的博客 2895

你必须要学会的js构造函数、原型、原型链

在做项目过程中,你可能想要添加多条数据,如果我们一条条的去添加未免有点麻烦,例如: 我在这里要录入nba球员的数据,我如果采取这种形式,我只能一条条的去写,其中,name、age、positions属性我要一直去填写,我一想,nba里面有几百名球员,我要是一直这样录,我不得累死?这时,的便利便显示出来了! 我们可以将name、age、positions作为构造函数的,代码示例如下: 当我们创建构造函数后,我们便可以通过new关键字去调用了: 我们能够发现这一种方式非常的方便,能够大幅度减少我们写重复代码,这

前端小白在前进的博客 1844

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

从构造函数到原型链

整理归纳构造函数与原型的关系

yiyi_11的博客 1417

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

构造函数、原型、原型链

构造函数、原型、原型链 原型和原型链应该是前端的面试中,必定会问到的东西吧。但是这一块很多小伙伴们都会绕不明白,今天我们就一起来深入了解一下原型和原型链吧。 咳咳,第一次写,大佬轻喷 要说原型的话,我们就要先来知道构造函数是一个什么东西。 构造函数 定义:通过 new一个 函数名,来实例化对象的函数就叫做构造函数。 注意:构造函数在定义的时候,必须使用大驼峰命名方式,比如:CreateHuman 一、构造函数和普通函数的区别 构造函数需要用 new 来创建,而普通函数不需要。构造函数: f

weixin_44263271的博客 422

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

构造函数与原型链

原型链(它是个过程):对应的对象的属性,先去找自己的__proto__是否存在,找的到就读取 找不到就会往上找(找父亲的构造函数),直到找到Object顶层对象,找到就返回值,找不到就返回

m0_68293816的博客 267

构造函数和原型与原型链

在典型的OOP语言中,都存在类的概念,类就是对象的模板(图纸),对象就是类的实例,但在ES6之前,js中并没有引入类的概念。ES6,全称,2015.06 发版。在ES6之前,对象不是基于类创建的,而是用一种称为构造函数的特殊函数来定义对象和它的特征。对象字面量 ({})自定义构造函数来看一个例子...

huangdj321的博客 572

构造函数和原型链

构造函数和原型链 好久没有记录了… 1.构造函数 1)创建对象的三种方式 以字面量的形式创建 var obj = {}; 通过构造函数Object创建 var obj = new Object(); 通过自定义构造函数创建 function Person(uname,age){ ​ this.uname = uname; ​ this.age = age; ​ this.sing:function(){ ​ console.log(‘我会唱歌’) } } var ldh = new P

weixin_45905955的博客 227

JS中的构造函数,原型,原型链,原型链继承

JavaScript是一门基于原型的解释型脚本语言,运行在浏览器端,同时JS也是面向对象的编程语言,在JS中所有的事物都可以看作是对象,字符串,数字,函数等等。 首先复习一下创建对象的方式有哪些? 1.通过对象字面量来创建:var student = { key:value,...} 2.通过new Object()创建对象: var student = new Object(); stude...

Zhou的博客 671

JS 构造函数、原型以及原型链

构造函数、原型以及原型链        ES6之前是没有引入类的概念,所以JavaScript是直接通过构造函数来创建实例的。在详细介绍原型以及原型链之前,先对相关的术语做个简单的介绍,方便大家有一个大概的了解。 构造函数:通过new关键字进行调用,为了创建一个自定义的类,并且创建这个类的实例。 实例:是类实例化之后一个一个具体的对象。 原型:通过现有实例来生成新实例的函数,也是一个对象。 原型链:就是联系实例与原型的链条。 一.构造函数

qq_45848004的博客 790

JS的构造函数、原型、原型链

JS的构造函数,原型,原型链

qq_45424937的博客 447

构造函数、原型及原型链

1、构造函数 funcion Foo (name,age){ this.name=name; this.age=age; this.class='class-1'; return this;//默认return this,可不用写 } var f = new Foo('gouhuan',18); var f2 = new Foo('zhaohuanling',1...

qq_34691738的博客 198

javascript构造函数及原型链梳理

构造函数和原型链是 JavaScript 中的重要概念,它们可以用于创建对象和实现继承功能。掌握构造函数和原型链的基本概念和用法,有助于提高 JavaScript 编程技能。下次再见。

to_the_Future的博客 454
上一篇: jquery 楼梯导航
下一篇: 配置php
昨夜太平长安888
博客等级 码龄9年 1万+粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值