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

news2024/9/22 15:31:40

求下面代码的输出结果:

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

    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.coloradmin.cn/o/1503134.html

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

相关文章

性能测试干2年,还不会这个技术点?

nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,记录的信息比较全面,结合nmon_analyzer工具产生数据文件与图形化结果。 nmon可监控的数据类型 内存使用情况、磁盘适配器、文件系统中的可用空间、CPU使用率等等数据信息 特点 ①占用…

“删边“的并查集------反向并查集

目录 1.题目2.思路3.代码 默认大家都会并查集了 1.题目 小美认为,在人际交往中,但是随着时间的流逝,朋友的关系也是会慢慢变淡的,最终朋友关系就淡忘了。 现在初始有一些朋友关系,存在一些事件会导致两个人淡忘了他们…

业务代码中如何使用装饰器模式?

装饰器模式(Decorator Pattern)介绍 装饰器模式(Decorator Pattern)是一种结构型设计模式,我们可以动态地给一个对象添加额外的职责。而不是通过继承增加子类的方式来扩展对象的功能,装饰器模式使用组合的…

Android14之编译输出system/product/vendor/odm分区(一百九十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【数据结构】HashMap的实现与常见问题

目录 一、概念 哈希算法与哈希表 二、哈希碰撞与解决 解决哈希冲突的四种方法 HashMap解决哈希冲突 三、代码实现 四、HashMap面试题 两个对象的hashcode一样那么equals一定一样吗?&& 两个对象的equals一样那么hashcode一定一样吗? Hash…

灵敏度都那么低了,为什么CCA的阈值还是-82

实际这个值的确是可以变化的。只是一般都不怎么变。 主要决定于两个因素。一个因素是邻区的干扰。如果干扰弱,那么就可以调高一点。跟布网有关。那么其实在家庭环境,这个不好控制。所以CCA阈值不好调整。但是如果仔细测量邻区的干扰,依然是可…

宝塔linux部署react项目 图文并茂 傻瓜式教学

华为云服务器购买与宝塔linux系统安装 购买服务器过程省略,记得付款就好,或者新人可去白嫖一个月试用 linux服务器安装宝塔 宝塔官网 不同版本安装命令 系统安装脚本Centos安装脚本yum install -y wget && wget -O install.sh https://downlo…

Android Studio轮播图使用失败怎么办【已解决】

Android Studio轮播图使用失败怎么办 1.在gethub上面搜索轮播图 2.选择要使用的轮播图 3.查看该轮播图的配置方法 4.复制该依赖放入build.gradle中 5.重新构建 6.使用banner 发现没有报错了 7.参考网址 https://github.com/youth5201314/banner

ELK-介绍及Elasticsearch集群搭建

ELK是三个开源软件的缩写,分别为Elasticsearch、Logstash、kibana它们都是开源软件。后来新增了一个FileBeat,它是一个轻量及的日志收集处理工具,因为Logstash由java程序开发,比较消耗内存资源,后来将Logstash使用go语…

解决gpt无法发送对话的问题

问题描述 如图,今天登上去发现怎么无法发送消息 解决 可能是cookie问题,重新删除了就行了 cookie删除后,需要重新登录,主题色也重置为原来的白色了

Node.js与Webpack笔记(二)

上一篇:Node.js与Webpack笔记(一)-CSDN博客 Webpack模块打包工具 1.Webpack简介以及体验 webpack是一个静态模块打包工具,从入口构建依赖图,打包有关的模块,最后用于展示你的内容 静态模块:编写…

ky10 server 银河麒麟服务器主备搭建 (nginx+keepalived)

下载脚本代码 git clone https://gitcode.net/zengliguang/nginx_keepalived_ky10_x.git 进入脚本路径 更新脚本代码 更新完成 执行安装脚本 安装nginx离线编译安装依赖 解压nginx源码 检查环境 编译 nginx安装成功 安装keepalived keepalived安装成功

华为OD机试真题-测试用例执行计划

测试用例执行计划 题目描述: 某个产品当前迭代周期内有N个特性({F1,F2,...,FN})需要进行覆盖测试,每个特性都被评估了对应的优先级,特性使用其ID作为下标进行标识。 设计了M个测试用例({T1,T2,...,TM}),每个用例对应了一个覆盖特…

【Python刷题】环形链表

问题描述 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&a…

SwiftUI之CoreData详解(一)

coreData 是一种数据持久化的方案,是对SQLite的一种封装。一说到这种桌面化的数据库,我就无比的怀念Foxbase|Foxpro, 多好的数据库产品,被微软扼杀了,相当年教大学生妹子们国家二级数据库时都是手把手教的,呃~~~&#…

解决火狐浏览器访问地址受限制问题(This address is restricted)

问题如下图: This address is restrictedThis address uses a network port which is normally used for purposes other than Web browsing. Firefox has canceled the request for your protection. 此地址受到限制 此地址使用通常用于 Web 浏览以外的目的的网…

21.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-配置数据保存到文件

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果 内容参考于: 易道云信息技术研究院VIP课 上一个内容:20.数据分析工具…

人才推荐 | 毕业于美国凯斯西储大学的博士,专业知识广泛

编辑 / 木子 审核 / 朝阳 伟骅英才 伟骅英才致力于以大数据、区块链、AI人工智能等前沿技术打造开放的人力资本生态,用科技解决职业领域问题,提升行业数字化服务水平,提供创新型的产业与人才一体化服务的人力资源解决方案和示范平台&#x…

前端使用Ant Design中的Modal框实现长按顶部拖动弹框需求

需求:需要Ant Design中的一个Modal弹框,并且可以让用户按住顶部实现拖动操作 实现:在Ant Design的Modal框的基础上,在title中添加一个onMouseDown去记录拖拽的坐标,然后将其赋值给Modal的style属性 代码部分&#xff…

没有面试邀约还在怪学历?帮助1万人通过面试的简历实战经验

很多人说自己明明投了很多公司的简历,但是都没有得到面试邀请的机会。自己工作履历挺好的,但是为什么投自己感兴趣公司的简历,都没有面试邀请的机会。反而是那些自己没有投递的公司,经常给自己打电话。 造成这些现象的主要原因&am…