js对象 静态方法和实例方法

求下面代码的输出结果:

首先先分析一下上面各函数:

    Person.say = function(){console.log("a")}

第一个say()方法是定义在Person函数身上的,我们如果想使用这个方法,可以通过Person().say()来调用

    this.say = function(){console.log("b")}

第二个say()方法,这个方法是一个实例方法,需要通过Person对象的实例来调用,比如:

let obj = new Person();  obj.say();

Person.prototype.say = function(){console.log("c")
}

第三个say()方法和第二个一样,需要通过实例对象来调用,那么他们的区别在于:第三个say()方法定义在Person的原型上,那么所有通过Person构造函数创建的实例都会共享这个方法。而第二个say()方法是一个实例方法,属于每个实例自己独有的方法。

Person.say = function(){console.log("d")
}

第四个say()方法和第一个类似,都是构造函数Person的静态方法,他们两的区别在于调用的时机不同

接下来我们分析输出代码:

Person.say()
var obj = new Person()
obj.say()
Person.say()

        第一个Person.say()是直接调用构造函数Person身上的静态方法say(),而且此时我们并没有调用过Person的构造函数,那么Person构造体内的代码也还是不存在的,第一个和第二个say()方法也都是不存在的,就只能调用第四个say()方法,该方法的输出为"d"

        使用Person构造函数创建了一个实例obj,调用obj.say()是调用实例方法say(),obj自身就有say()方法,所以不会到Person的原型上找say()方法,所以调用的是第二个say()方法,输出的是"b"

        再次调用Person.say(),因为已经调用过Person构造函数,构造函数内部的第一个say()方法覆盖掉了第四个say()方法,所以调用的是第一个say()方法,输出"a"

        最后看输出结果是否如此:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/732365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Docker7】Docker安全及https安全认证

Docker安全及https安全认证一、Docker 容器与虚拟机的区别1、隔离与共享2、性能与损耗3、不同点 二、Docker 存在的安全问题1、Docker 自身漏洞2、Docker 源码问题 三、Docker 架构缺陷与安全机制1、容器之间的局域网攻击2、DDoS 攻击耗尽资源2.1 什么叫CC攻击?什么…

Python实现汉诺塔演示程序

Python实现汉诺塔演示程序 汉诺塔问题 一个板子上有三根柱子以及一些大小各不相同的圆盘。我们分别把这三根柱子叫做起始柱A、辅助柱B及目标柱C,汉诺塔移动圆盘的规则如下: 把起始柱A上所有的圆盘都移动到C柱,且在移动过程中始终保持圆盘从…

先进电机技术 —— 伺服驱动器与变频器

一、变频器与伺服驱动器发展趋势 在近年来的技术发展中,变频器和伺服驱动器均呈现出显著的先进性提升和技术融合趋势,以下是一些主要的发展方向: ### 变频器的发展趋势: 1. **智能化与网络化**: - 高级变频器集成…

react hook:useMemo

useMemo在每次重新渲染的时候能够缓存计算的结果。 在初次渲染时,useMemo 返回调用 calculateValue 的结果。 在接下来的渲染中,如果依赖项没有发生改变,它将返回上次缓存的值;否则将再次调用 calculateValue,并返回最…

Git本地新项目推送到远程仓库

假设开发了一个新项目,想推送到远程,具体的操作方式和命令如下: (使用 git bash) 1、切到项目目录中 2、初始化git仓库并在本地提交 //初始化git仓库 git init//将当前目录下的文件添加到仓库(缓冲区&…

【知识分享】自动化测试首选接口自动化?

在分层测试的“金字塔”模型中,接口测试属于第二层服务集成测试范畴。 相比UI自动化测试而言,接口自动化测试收益更大,且容易实现,维护成本低,有着更高的投入产出比。因此,项目开展自动化测试的首选一般为接…

Python 基础语法:基本数据类型(字符串)

在日常生活中,我们经常会用文字来记录事物的名称、或记录事情的发展过程等,这些文字类型的数据,就叫做字符串。在未来的写代码的工作中,无论你从事的是哪个方面的编程,字符串操作必不可少,非常重要。 1 字…

linux系统安装docker

docker安装 docker安装自带源安装docker版本和官方源安装国内源安装新版docker生产docker的环境配置登入登出docker hub国内镜像源 docker安装 自带源安装 CentOS 7 中 Docker 的安装: Docker 软件包已经包括在默认的 CentOS-Extras 软件源(联网使用centos7u2自带网络Yum源)里…

计算机网络(基础篇)复习笔记——体系结构/协议基础(持续更新中......)

目录 1 计算机网络基础相关技术Rip 路由更新操作 2 体系结构(OSI 7层, TCP/IP4层)应用层运输层网络层IPv4无分类域间路由选择 CIDRIPV6 数据链路层循环冗余校验CRC协议设备 物理层传输媒体信道复用技术宽带接入技术数据通信 3 网络局域网(以太网Ethernet) 4 通信过程编码:信道极…

vue router 解决路由带参数跳转时出现404问题

我的页面是从一个vue页面router跳转到另一个vue页面,并且利用windows.open() 浏览器重新创建一个页签。但是不知道为什么有时候可以有时候又不行,经过反复测试与分析,最终发现是因为有一个参数的值里包含了小数点., 小数点是浏览器合法字符&a…

Pytest测试中的临时目录与文件管理!

在Pytest测试框架中,使用临时目录与文件是一种有效的测试管理方式,它能够确保测试的独立性和可重复性。在本文中,我们将深入探讨如何在Pytest中利用临时目录与文件进行测试,并通过案例演示实际应用。 为什么需要临时目录与文件&a…

#KEIL使用

关于在调试时,有些局部变量值无法在窗口中查看报错“not in scope",是被优化掉了,降低优化等级即可。 参考博客: KeilMDK 开发过程中遇到一些奇怪问题记录_keil遇到了不正当的冲突-CSDN博客

Java高频面试之异常篇

有需要互关的小伙伴,关注一下,有关必回关,争取今年认证早日拿到博客专家 finally 块中的代码什么时候被执行? (1)如果try{}语句块中有return语句,而finally{}语句块中没有return语句时,finally{}块中的代码在return语…

全国保护性耕作/常规耕作农田分类数据集

基于Sentinel-2遥感产品,使用来自文献调研和目视解译产生的保护性/常规耕作样本点,通过交叉验证方法训练随机森林分类器,生成了2016-2020年全国保护性耕作/常规耕作农田分类数据集。分类代码:0值代表非农田,1值表示第一…

“轻松入门Electron:一步步构建梦想中的桌面软件

在数字化的浪潮中,桌面应用依旧占据着其独特而重要的位置,不论是在企业解决方案、专业工具软件还是个性化应用领域中都是如此。随着技术的演进,创建这些应用的过程已经变得更为简单和可行,尤其是随着Electron等框架的出现。Electr…

k8s中pod组件简介

背景 k8s中pod是很重要的概念,他是k8s调度的最小单位,和我们以往的以docker容器为调度单位是不一样的,那么为什么k8s会以pod为调度单位而不是以更小的docker容器为调度单位呢? pod组件 pod是一个逻辑的概念,其中可以包含多个d…

R语言及其开发环境简介

R语言及其开发环境简介 R 语言历史 R 语言来自 S 语言,是 S 语言的一个变种。S语言由贝尔实验室研究开发,著名的 C 语言、Unix 系统也是贝尔实验室开发的。R 属于 GNU 开源软件,最初发布于1997年,实现了与 S 语言基本相同的功能…

【异常处理】sbt构建Chisel库时出现extracting structure failed:build status:error的解决办法

文章目录 报错背景:解决思路:①IDEA中配置本地的SBT进行下载②更改下载源为华为的镜像站1. 修改sbtconfig.txt2. 增加repositories文件 ③查看报错信息 总结整理的Scala-Chisel-Chiseltest版本信息对应表 报错背景: 最近在写Chisel时&#x…

K8s-MySQL主从集群

K8s-MySQL主从集群 引言 该案例代码均可从https://github.com/WeiXiao-Hyy/k8s_example 获取,欢迎Star! 需求 一个“主从复制”的MySQL集群有一个主节点Master有多个从节点Slave从节点需要能水平扩展所以写操作只能在主节点上执行读操作可以在所有节点…

Java组合模式在项目中使用场景

组合模式 一、介绍二、人员管理系统使用案例 一、介绍 将对象组合成树形结构以表示“部分-整体”的层次关系。组合模式使得用户对单个对象和组合对象的使用都是相同的。 组合模式主要由以下几个部分构成: Component(组件):定义…