js中Fucntion的意义

在js中,我们常常如下方式写函数:

function fn(){console.log("这是一个函数.");
};
fn();

69a1366395bf42598f5587808f530fe3.png

 在js中,函数本质就是一个对象。

那么,结合我的上一篇文章:通俗讲解javascript的实例对象、原型对象和构造函数以及它们之间的关系-CSDN博客

刚刚写的这个函数 ,实际上是一个“实例对象”。

那么,它就有原型对象(类)和构造函数。

function fn(){console.log("这是一个函数.");
};
console.log(fn.__proto__);
console.log(fn.__proto__.constructor)

1cb3c4de3193414db3fff0c02c1629c7.png 

接下来,需要逆向思维一下:如果知道了构造函数,是不是就可以new出实例对象呢?

参考如下代码:

//构造函数
function Person(name,age)
{this.name=name;this.age=age;this.sleep=function(){console.log("睡觉");}
}//p1是实例对象
var p1=new Person("张三",20);

接下来,我们的构造函数成了Function(),那么new它一下,就出来了实例对象【也就是函数】。

var fn1=new Function("console.log('我是一个函数');");
console.log(fn1);
fn1();

c4c81de773474cd1996ccb0c4338013e.png 

由此可以得到两点:

(1)函数fn1实际上是Function构造函数的实例对象;

(2)Funciton的参数,就是函数fn1的函数体。 

所以,在有些场景下,就可以将普通写法的fn,变成用Function表示的形式,如:

!function(){debugger;
}();

等同于

var fn=new Function("debugger");
fn();

或者

new Function("debugger")();

 

 

 

 

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

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

相关文章

谷歌浏览器如何更改下载文件存放的方式及其路径?

1、点击谷歌浏览器右上角的【三个点】 2、选择【设置】,再选择【下载内容】 3、打开【下载完成后显示下载内容】开关, 则:下载网页上的东西之后,会显示在【谷歌浏览器】的右侧,并显示具体下载文件在右侧:…

探索OpenAI的全新里程碑:o1模型

近期,人工智能领域迎来了一项重要突破——OpenAI发布了其最新的语言模型o1。作为一款专为解决复杂问题设计的新一代大语言模型(LLM),o1标志着该公司在智能推理能力方面迈出了重要的一步。尽管这个新系统仍处于初步阶段&#xff0c…

系统架构师-面向服务架构(SOA)全解

1、为什么需要SOA架构 1.1 系统集成问题 异构系统整合 例如,一个企业可能同时拥有用 Java 开发的企业资源规划(ERP)系统、用 C# 开发的客户关系管理(CRM)系统以及用 Python 开发的数据分析系统。通过 SOA&#xff0…

WebRTC中的维纳滤波器实现详解:基于决策导向的SNR估计

目录 1. 维纳滤波器的基本原理2. WebRTC中的维纳滤波器实现3. 代码逐步剖析4. 总结 在WebRTC的噪声抑制模块中,维纳滤波器(Wiener Filter)是一种非常常见且重要的滤波器,用于提高语音信号的清晰度并抑制背景噪声。本文将详细解释维…

Flask学习之项目搭建

一、项目基本结构 1、 exts.py 存在的目的:在Python中,如果两个或更多模块(文件)相互导入对方,就会形成导入循环。例如,模块A导入了模块B,同时模块B又导入了模块A,这就会导致导入循环。 比如在这个项目中…

【第二十章:Sentosa_DSML社区版-机器学习之自动建模】

目录 20.1 自动回归 20.2 自动分类 20.3 自动聚类 20.4 AutoARIMA 20.5 自动数据准备 【第二十章:Sentosa_DSML社区版-机器学习之自动建模】 20.1 自动回归 1.算子介绍 为了方便用户在不了解每个具体回归算法原理,及每个算法参数设置具体含义的情…

Threejs绘制圆锥体

上一章节实现了胶囊体的绘制,这节来绘制圆锥体,圆锥体就是三角形旋转获得的,如上文一样,先要创建出基础的组件,包括场景,相机,灯光,渲染器。代码如下: initScene() {this…

[Linux]从零开始的Minecraft服务器搭建教程

一、前言 学习Linux有一段时间了,当然,我们要把学习的知识运用到实际生活中去。最近朋友们都在玩我的世界,网易版的我的世界联机非常不稳定,用起来也算是非常难受了。所以还是准备转战JAVA版。为了联机,可以考虑一个人…

HBase DDL操作代码汇总(namespace+table CRUD操作)

HBase DDL操作 DDL操作主要是关于命名空间和表格的内容增删改查。 注:如果出现无法连接到zookeeper等的相关错误,可以将以下代码打jar包,在HMaster节点上执行 错误提示: Exception in thread “main” java.net.SocketTimeoutExc…

DVWA 靶场环境搭建

作者:程序那点事儿 日期:2024/09/15 09:30 什么是DVWA: 是OWSASP官方编写的PHP网站,包含了各种网站常见漏洞(漏洞靶场),可以学习攻击及修复方式。 PHP环境包含了,Windows/Apache/Mysql/Php g…

公安局软件管理平台建设方案和必要性,论文-2-———未来之窗行业应用跨平台架构

一、平台方略 随着gov信息化建设的不断推进,各类ZW软件的应用需求日益增加。为了提高ZW软件的获取便利性、AQ性和规范性,建设一个专门的GOV软件管理平台具有重要意义。 集中提供各类ZW软件,方便工作人员快速获取和安装,减少因软…

开放原子开源基金会OPENATOM

AtomGit_开放原子开源基金会代码托管平台-AtomGit 开放原子开源基金会是致力于推动全球开源事业发展的非营利机构,于 2020 年 6 月在北京成立,由阿里巴巴、百度、华为、浪潮、360、腾讯、招商银行等多家龙头科技企业联合发起。 精选项目: 比…

IDEA:如何设置项目启动的JVM运行内存大小

IDEA版本不一样页面也不一样 -Xms20m -Xmx200m 其实在本地开发调试的时候不需要太大内存,如果测试性能建议放到运算服务器上面去跑~~~

Python 递归函数如何工作?如何防止递归调用过深导致栈溢出

递归是编程中的一个重要概念,尤其在 Python 中,递归函数可以使某些问题的解决变得更加简洁和优雅。尽管递归具有强大的表达能力,但如果不加以控制,递归调用过深可能会导致栈溢出。本文将深入探讨递归函数的工作原理,如…

android和ios双端应用性能的测试工具

1.工具介绍 基于日常工作的需要,开发了一款新的android和ios端应用性能测试工具,本工具在数据测试方面与所流行的工具没有区别。欢迎下载使用体验。 本工具为筋斗云,工具说明 本工具无侵入,不需要root,低延迟…

二叉树的基本概念(上)

文章目录 🍊自我介绍🍊简介🍊树的定义树中的专业术语树的分类 🍊二叉树的特性讲解 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏(一键四连)哦~ 🍊自我介…

VisualStudio如何卸载Resharper插件?

本来按理说,卸载插件应该就是在扩展下的已安装插件中,找到该插件,点一下就会出现卸载的按钮的。 没想到这个Resharper这么吊,卸载按钮居然是个灰色的,意思就是此路不通,有特权的。 那么这种情况下&#x…

第68期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

Android studio安装问题及解决方案

Android studio安装问题及解决方案 gradle已经安装好了,但是每次就是找不到gradle的位置,每次要重新下载,很慢,每次都不成功 我尝试用安装android studio时自带的卸载程序,卸载android studio,然后重新下…

php发送邮箱教程:如何实现邮件发送功能?

php发送邮箱性能优化策略?怎么使用PHPMail发送邮箱? 无论是用户注册验证、密码重置,还是系统通知,邮件发送都是不可或缺的一部分。AokSend将详细介绍如何使用PHP实现邮件发送功能,帮助开发者快速掌握这一技能。 php发…