当前位置: 首页 > news >正文

js中Fucntion的意义

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

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

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

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

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

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

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

 

接下来,需要逆向思维一下:如果知道了构造函数,是不是就可以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();

 

由此可以得到两点:

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

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

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

!function(){debugger;
}();

等同于

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

或者

new Function("debugger")();

 

 


http://www.mrgr.cn/news/35228.html

相关文章:

  • 语言的副作用
  • 打卡软件——人脸识别综合实现
  • Python NumPy学习指南:从入门到精通
  • 应用层 III(电子邮件)【★★】
  • Vue(16)——Vue3.3新特性
  • 最小花费爬楼梯(动态规划)问题
  • 工业一体机实现接口与模块选配
  • 【后端开发】JavaEE初阶—线程安全问题与加锁原理(超详解)
  • 3270.求出数字答案题解
  • Winform—事件多播和事件联机响应
  • 【Python百日进阶-Web开发-FastAPI】Day805 - FastAPI的请求体
  • golang学习笔记14-函数(三):系统函数
  • Python语句: For 循环的详细讲解
  • CCIE证书有用吗?CCIE含金量解读!
  • js实现多行文本控件textarea,根据文本内容自适应窗口全部显示
  • C++ SLT标准模板简介
  • iframe和父页面使用message通信,支持跨域
  • 负载均衡--TLS安全策略(四)
  • Java反射机制入门:解锁运行时类信息的秘密
  • 【解决虚拟机NAT联网】收藏这份教程就不用再辛苦找了