解析js之构造函数

一、函数介绍
函数就是将实现特定功能的代码封装起来,当我们需要实现特定功能时,直接调用函数实现即可,不需要每次都写一堆代码,实现代码的复用。

函数的作用:
1、实现功能的封装,提高代码复用率
2、用于构建对象的模板(构造函数)

函数实际上是对象,每个函数都是Function类型的实例,并且都与其他引用类型一样具有属性和方法,由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定。

二、函数的声明

语法:

function 函数名(形参列表){//函数体
}

我们也可以写成函数表达式的形式:

var 函数名 = function(形参列表){//函数体
}

例子:

// 函数声明
function sum(a,b){return a + b
}
//函数声明之后,需要调用才能执行
// 函数调用:函数名(实参)
console.log(sum(1,2))  //3

写成函数表达式的形式:

// 函数声明
var sum = function(a,b){return a + b
}
// 函数调用:函数名(实参)
console.log(sum(1,2)) //3

函数声明提升
函数声明与var声明的变量类似,也存在声明提升。

sum(1,2) //在此处调用函数不会报错,因为存在函数声明提升
function sum(a,b){return a + b
}

注意:使用函数表达式声明函数时,不可以把函数调用写在函数声明前面,因为变量赋值不存在提升。 

三、函数内部属性

函数内部属性只能在函数内部才能访问

arguments

arguments是一个类数组对象,包含着传入函数中的所有参数。arguments主要用途是保存函数参数。

function foo(){console.log(arguments) // [Arguments] { '0': 1, '1': 2, '2': 3, '3': 4 }console.log(arguments[1]) // 2
}
// 当传递的实参个数超过形参的个数的时候不会报错,所有的实参都会保存在arguments里
foo(1,2,3,4) 

注意:arguments 中存的是实参,而不会存形参

function foo(a,b = 2,c = 3){console.log(arguments) // [Arguments] { '0': 1 }console.log(b) //2console.log(c) //3
}
//只传了一个实参,那么arguments中就只有一个值
foo(1) 

callee 属性

arguments 对象有一个名为callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数。

 

 

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

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

相关文章

【其他】数字孪生简介

数字孪生简介 一、数字孪生的概念二、数字孪生的起源三、数字孪生系统的特点四、作用和结论五、使用方式 一、数字孪生的概念 数字孪生是充分利用物理模型、传感器更新、运行历史等数据,集成多学科、多物理量、多尺度、多概率的仿真过程,在虚拟空间中完…

爱芯派pro通过无线网卡rtl8188eu连接热点

爱芯派pro通过无线网卡rtl8188eu连接热点 爱芯派pro目前的底板的pcie的复位有问题,所以pcie接口无法挂载上去,所以自己购买的rtl8822网卡也用不了,然后想起来自己还有正点原子的rtl8188eu网卡,但是没有和工作人员进行摸索后才知道…

用大白话举例子讲明白区块链

什么是区块链?网上这么说: 区块链是一种分布式数据库技术,它以块的形式记录和存储交易数据,并使用密码学算法保证数据的安全性和不可篡改性。每个块都包含了前一个块的哈希值和自身的交易数据,形成了一个不断增长的链条…

如何禁止外网访问公司内网服务器

对于企业网络,经常会用到访问控制,例如限制员工的上网时间?或如何控制各部门之间的网络互通等等,在实际企业网络项目中经常会遇到,这里面我们就可以用到ACL访问列表控制了,本期我们一起来看下,如…

SpringBoot已经禁掉了循环依赖!

还在问循环依赖嘛?SpringBoot已经禁掉了循环依赖! 首发2023-12-18 11:26yuan人生 如果现在面试时还有人问你循环依赖,你就这样怼他:循环依赖是一种代码质量低下的表现,springboot2.6之后的版本已经默认禁用了。 Spr…

保护电脑安全,火绒安全助手 V5.0

火绒安全软件,也称为“火绒安全助手”是一款由中国研发的综合安全软件。火绒安全软件旨在为计算机用户提供全面的安全保护,包括防病毒、反恶意软件、网络安全、系统优化等功能。 火绒安全的功能 病毒防护:火绒提供实时的病毒和恶意软件扫描…

排序算法——快排

快速排序算法最早是由图灵奖获得者Tony Hoare设计出来的,他在形式化方法理论以 及ALGOL.60编程语言的发明中都有卓越的贡献,是20世纪最伟大的计算机科学家之—。 而这快速排序算法只是他众多贡献中的—个小发明而已。 快速排序(Quick Sort)的基本算法思…

C语言—每日选择题—Day57

指针相关博客 打响指针的第一枪:指针家族-CSDN博客 深入理解:指针变量的解引用 与 加法运算-CSDN博客 第一题 1. 下面程序段() char *str[] {"ABC", "DEF", "GHI"}; puts(str[1]); A:A…

Vue2源码梳理:在 import Vue 时干了啥

分析导入入口 在Web应用的 Vue.js 构建过程的 Runtime Compiler 版本下,我们重点关注这个版本它的入口是 src/platforms/web/entry-runtime-with-compiler.js 1 ) entry-runtime-with-compiler.js 入口文件 现在分析一下在 import Vue 的时候,都执行了…

用户行为分析遇到的问题-ubantu16,hadoop3.1.3

用户行为分析传送门 我的版本 ubantu16 hadoop 3.1.3 habse 2.2.2 hive3.1.3 zookeeper3.8.3 sqoop 1.46/1.47 我sqoop把MySQL数据往hbase导数据时候有问题 重磅:大数据课程实验案例:网站用户行为分析(免费共享) 用户行为分析-小…

5G+云渲染技术:将如何快速推进XR和元宇宙?

XR(扩展现实)领域正在以惊人的速度增长。目前,到 2024 年,一些专家表示这个行业的价值将达到 3000 亿美元。 这个行业发展如此迅速的部分原因是 XR 将在商业环境中的带来巨大利益。近年来,很多企业遇到了将增强现实和…

RabbitMQ不公平分发问题分析及问题解决

1.不公平分发 1.1 不公平分发策略是什么? 在 RabbitMQ 中,不公平分发(Unfair Dispatch)是指当多个消费者(Consumers)同时订阅同一个队列(Queue)时,消息的分发机制是不公…

I.MX6ULL_Linux_驱动篇(48)linux I2C驱动

I2C 是很常用的一个串行通信接口,用于连接各种外设、传感器等器件。本章我们来学习一下如何在 Linux 下开发 I2C 接口器件驱动,重点是学习 Linux 下的 I2C 驱动框架,按照指定的框架去编写 I2C 设备驱动。本章同样以 I.MX6U-ALPHA 开发板上的 …

逻辑判断 | 判断推理

文章目录 翻译推理前推后(A->B)后推前(B->A)且和或 翻译推理 前推后(A->B) 关键词 如果 … 那么 …若 … 则 …只要 … 就 …为了 … 一定(必须)…所有 … , … 都… 是 … 的充分条件 后推前(B->A) 关键词 只有 … 才 …除非 …否则不…

Java数据结构-模拟ArrayList集合思想,手写底层源码(1),底层数据结构是数组,编写add添加方法,正序打印和倒叙打印

package com.atguigu.structure; public class Demo02_arrayList {public static void main(String[] args) {MyGenericArrayListV1 arrayListV1 new MyGenericArrayListV1();//arr.add(element:100,index:1);下标越界,无法插入//初始化(第一次添加&…

Java 栈和队列的交互实现

文章目录 队列和栈的区别一.用队列模拟实现栈1.1入栈1.2出栈1.3返回栈顶元素1.4判断栈是否为空 二.用栈模拟实现队列2.1 入队2.2出队2.3peek2.4判断队列是否为空 三.完整代码3.1 队列模拟实现栈3.2栈模拟实现队列 队列和栈的区别 栈和队列都是常用的数据结构,它们的…

令人惊叹的代码技巧

在编程世界中,有一些令人惊叹的代码技巧和巧妙的实现方式。以下是一些我见过的令人印象深刻的代码技巧: 函数式编程魔法: 使用函数式编程的一些特性,比如高阶函数、匿名函数和Lambda表达式,可以使代码更为简洁、易读。…

飞天使-k8s知识点1-kubernetes架构简述

文章目录 名词功能要点 k8s核心要素CNCF 云原生框架简介k8s组建介绍 名词 CI 持续集成, 自动化构建和测试:通过使用自动化构建工具和自动化测试套件,持续集成可以帮助开发人员自动构建和测试他们的代码。这样可以快速检测到潜在的问题,并及早…

揭秘Spark学习框架网站:让你轻松掌握大数据处理神器!

介绍:Apache Spark是一个开源的大数据处理框架,它致力于实现高速、易用和复杂分析。Spark最初由加州大学伯克利分校的AMPLab于2009年开始开发,并于2010年成为Apache的开源项目之一。由于其出色的性能表现与丰富的功能特性,Spark已…

解决:Network ErrorAxiosError: Network Error at XMLHttpRequest.handleError

问题:Uncaught runtime errors:ERROR Network Error AxiosError: Network Error at XMLHttpRequest.handleError (webpack-internal:///./node_modules/axios/lib/adapters/xhr.js:160:14) 解决:在Controller类上加上CrossOrigin注解 /**解…