JS高级中的constructor构造函数

news2024/11/19 15:30:34

1.对象原型__proto__和构造函数原型对象prototype里面都有一个constructor属性

2.constructor  称为构造函数  因为它的作用是用于new的实例对象指回构造函数本身

3.constructor 主要用于记录该对象是用于那个构造函数  它可以让原型对象prototype重新指向原来构造他的构造函数

注:如果我们修改了原来的原型对象,给原型对象赋值的是一个对象,则必须手动的利用constructor指回原来的构造函数

我们先创建一个构造函数 Star 

构造函数(prototype)原型对象里面都有一个属性 constructor 属性 ,指回了构造函数Star

    // constructor:指向构造函数本身
        // 作用:1.记录该对象引用于哪个构造函数。 2.它可以让原型对象重新指向原来的构造函数。
        // 该属性位于哪里???
        function Star(uname, age) {
            this.uname = uname;
            this.age = age;
        }
        //给构造函数原型prototype对象添加方法
        Star.prototype.sing = function () {
            console.log('我会唱歌');
        };

        Star.prototype.work = function () {
            console.log('我会工作  给你打工   让你压榨我的相对剩余时间');
        };

        
        var smallCaps = new Star('小瓶盖', 18);
        
        console.log(Star.prototype);//star的原型对象prototype

        console.log(Star.prototype.constructor);//指回了star

 如果我们修改了原来的原型对象,给原型对象赋值的是一个对象,则必须手动的利用constructor指回原来的构造函数

我的理解:就是直接给prototype赋值了一个对象   之前prototype原型里面的constructor属性被覆盖了   所以要手动重新添加constructor属性

解决方法   手动添加一个constructor属性  让其重新值回构造函数Start

  Star.prototype = {
           
            sing: function () {
                console.log('我会唱歌');
            },
            work: function () {
                console.log('我会工作  给你打工   让你压榨我的相对剩余时间');
            }
        }

console.log(Star.prototype.constructor);

控制台输出结果:没有此属性

 添加:constructor: Star,   //手动添加constructor属性指向Star

        Star.prototype = {
            constructor: Star,   //手动添加constructor属性指向Star
            sing: function () {
                console.log('我会唱歌');
            },
            work: function () {
                console.log('我会工作  给你打工   让你压榨我的相对剩余时间');
            }
        }

        console.log(Star.prototype.constructor);//指向了star;
        console.log(Star.prototype.constructor === Star);

 

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

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

相关文章

Vue|计算属性

1. 计算属性1.1 差值语法1.2 methods1.3 计算属性1. 计算属性 1.1 差值语法 开始前分别在项目目录创建文件夹及页面如下 需求1:在两个文本框中分别输入姓和名的同时需要在下方将数据进行拼接组装,效果如下图 如果用传统的方式来实现的话,需要…

vue2.x的h函数(createElement)与vue3中的h函数

1. vue2.x的 h 函数(createElement) 使用方法及介绍:(参考官网提取)h函数第一个是标签名字 或者是组件名字,第二个参数是配置项,第三个参数是 innerText ,不会帮你转换节点,如果需要转换成节点…

background-size 之 背景图的尺寸设置

目录 一:background-size参数取值 1.0 1.1 二:实例分析 2.1 参数分析 2.2 代码实例分析 引:background-size: 没有设置任何尺寸时使用图片本身的大小,宽度和高度都是auto默认值 可以用px设置成具体的值,也可以使…

二、pytest+selenium+allure实现web ui自动化

上一章: 一、web ui自动化环境搭建 pytestallureselenium_傲娇的喵酱的博客-CSDN博客_pytestseleniumallure pytest二次开发相关文章: pytest框架二次开发之自定义注解_傲娇的喵酱的博客-CSDN博客 pytest框架二次开发之机器人报警_傲娇的喵酱的博客-…

前端面试:浅拷贝和深拷贝的区别?

前些天发现了一个巨牛的人工智能学习博客,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转 那么大家晚上好,我是今天晚上的主讲老师,我是兔哥。 我们在面试中经常会被问到浅拷贝和深拷贝的区别,正好群里…

百度低代码框架amis介绍及实例讲解

目录引言为什么用amis?官网这么说的amis不适合做什么?amis框架集成配置与组件概念实例:通过一个CRUD组件实现增删改查列表列表查询查看详情自定义操作按钮提交表单引言 目前低代码概念已经无人不知,随着新冠病毒的爆发&#xff0…

修改elementUI样式未生效问题(挂载到了body标签上)

修改挂载到body标签上elementUI样式问题 目录修改挂载到body标签上elementUI样式问题前言一、适用范围二、示例1.目标2.实现思路修改自带样式方法最后看效果总结前言 在使用element-ui库的时候,有时会需要修改它自带的css样式,组件模块化化编程时一般会…

【Vue3中的响应式原理】

Vue3响应式原理 在Vue2的响应式中,存在着新增属性,删除属性以及直接通过下标修改数组,但页面不会自动更新的问题。但是在Vue3中,这些问题都得以解决。 Vue2中的响应式原理 首先我们先看一下Vue2中的响应式原理,其次…

vantUI van-picker中的column使用,picker选择器展示对象数组里面的属性,自定义展示数据

项目场景: 需要VantUI实现的功能 问题描述 vant中的picker选择器,只能用这种数组,来展示数据 columns: [‘杭州’, ‘宁波’, ‘温州’, ‘绍兴’, ‘湖州’, ‘嘉兴’, ‘金华’, ‘衢州’], 往往我们的请求数据,都是这样的。对…

::before和::after是什么?

本文从最简单的开始,解释如何理解和使用::before和::after。然后再在实际使用场景中去应用它。 ::before和::after可以添加到选择器以创建伪元素的关键字。伪元素被插入到与选择器匹配的元素内容之前或之后。 content属性 1)::before和::after下特有的c…

图文详解vue.js devtools插件使用方法

Vue.js devtools 背景简介 我们chrome插件网之前介绍过Vue.js devtools,是基于google chrome浏览器的一款调试vue.js应用的开发者浏览器扩展,可以在浏览器开发者工具下调试代码。做前端开发的IT工程师应该比较熟悉这款工具,可以边侧边栏窗格…

【前端写java接口】前端用java写一个简单的后端接口并和前端交互数据【以前端角度解释,详细注释,谁都看得懂】

先声明: 我不是做后端的,我是前端的,然后想要做一个后端的接口平常用来测试测试前端的页面,所以百度加上看看视频学了几天,简单的做一个,可能很多不专业的地方,后端小哥们别太严格哈&#xff0…

【react】什么是fiber?fiber解决了什么问题?从源码角度深入了解fiber运行机制与diff执行

壹 ❀ 引 我在[react] 什么是虚拟dom?虚拟dom比操作原生dom要快吗?虚拟dom是如何转变成真实dom并渲染到页面的?一文中,介绍了虚拟dom的概念,以及react中虚拟dom的使用场景。那么按照之前的约定,本文来聊聊react中另一…

Vue中实现清空数组和清空el-table

场景 要实现的效果是 那么就要用到怎样将这个el-table清空,即在vue中怎样将数组清空。 注: 博客:霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 …

JavaScript 教程 (详细 全面)

文章目录JavaScript 是什么?JavaScript 简介1. JavaScript 的历史2. JavaScript 与 ECMAScript 的关系3. 如何运行 JavaScript4. JavaScript 具有以下特点Node.js 是什么?Node.js 简介1. 运行时是什么?2. Node.js 的诞生3. Node.js 的组成4. …

uniapp实现上拉加载更多

目录 一、添加全部 1.在主页面中添加一列 2.改云函数 3.插件市场导入 加载中组件 二、实现上拉加载 1.云函数中可以接收参数 2.获取下拉事件 3.写触发这个下拉干嘛 在 显示加载中的组件里面 一、添加全部 1.在主页面中添加一列 data.unshift({name:全部}) //添加一列 …

尚品汇项目笔记(持续更新中)

项目网络教学视频链接:尚硅谷VUE项目实战,前端项目-尚品汇(大型\重磅)_哔哩哔哩_bilibili 目录 一、 使用vue-cli脚手架去初始化项目 二、项目的其他配置 三、项目路由分析 四、创建Header和Footer非路由组件 五、完成路由组件的搭建 六、利用【路…

uniapp使用iconfonts图标不显示以及颜色问题

在uniapp中使用阿里的iconfont图标遇到了图标无法显示出来的问题, 以及图标显示了但是为一个小正方形的问题, 同时包括图标颜色不显示的问题。 以下方式解决了这三个问题(适用class方式引入) 1,iconfont图标的引入…

C++实现爬虫,深入理解爬虫原理(最详细,最简单的教程)

前言: 我目前主要学习方向是c,看到网上基本上都是用python写的爬虫,我也试过,确实非常方便,几行代码就能解决,但却就是因为python封装的太好,过于简单,使得很多人包括我最开始的时候,都很难理解爬虫原理.所以就想着能不能用c实现一个简单的爬虫. 最后我成功实现C版爬虫从某图…

vue执行配置选项npm run serve的本质

vue执行配置选项npm run serve运行开发服务器的本质 目录 vue执行配置选项npm run serve运行开发服务器的本质 一、启动开发服务器、调用“工具链”、编译、并运行当前工程 二、npm run serve内部原理分析 三、vue编译运行过程 喜欢的,就收藏并点个赞&#xff…