你可能不知道的JavaScript的new Function()方法


Posted in Javascript onApril 17, 2014

我们大多数人都使用过JavaScript,近年来随着各种JavaScript框架的流行使得JavaScript变得更加神奇和容易。"Anonymous (匿名)函数?不知道那是什么但是看起来和自己所写的差不多。”
你可能并不知道可以传给 new Function() 一个字符串作为函数的body来构造一个 JavaScript函数。编程中并不经常用到,但有时候应该是很有用的.

下面是 new Function 的基本用法:

// 最后一个参数是函数的 body(函数体),类型为 string;  
// 前面的参数都是 索要构造的函数的参数(名字)  
var myFunction = new Function('users', 'salary', 'return users * salary'); 

非常简单,对吧?

问题是:什么时候适合使用这种方式,而不使用传统的函数声明 function myFnName() 和/或 匿名函数定义? Andrea Giammarchi 认为,最适合使用 这种函数定义方式的场景是在NodeJS和浏览器的全局环境中:

(function(win) {    
    // 在全局环境中执行某些操作  
  
})(Function('return this')()); 

如果你曾经使用过 new Function模式,欢迎留言和讨论!
Javascript 相关文章推荐
javascript 图片上传预览-兼容标准
Jun 01 Javascript
IE6下CSS图片缓存问题解决方法
Dec 09 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
Mar 01 Javascript
window.requestAnimationFrame是什么意思,怎么用
Jan 13 Javascript
js键盘上下左右键怎么触发function(实例讲解)
Dec 14 Javascript
基于jQuery实现在线选座之高铁版
Aug 24 Javascript
JavaScript的设计模式经典之代理模式
Feb 24 Javascript
jQuery 中的 DOM 操作
Apr 26 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
Jun 03 Javascript
微信小程序实现传参数的几种方法示例
Jan 10 Javascript
layui 弹出层回调获取弹出层数据的例子
Sep 02 Javascript
JavaScript实现矩形块大小任意缩放
Aug 25 Javascript
在JS中解析HTML字符串示例代码
Apr 16 #Javascript
iframe的onreadystatechange事件在firefox下的使用
Apr 16 #Javascript
javascript打开word文档的方法
Apr 16 #Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
Apr 16 #Javascript
JavaScript两种跨域技术全面介绍
Apr 16 #Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
Apr 16 #Javascript
JavaScript框架(iframe)操作总结
Apr 16 #Javascript
You might like
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
js的.innerHTML = ""IE9下显示有错误的解决方法
2013/09/16 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
Python简单I/O操作示例
2019/03/18 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
乔迁之喜主持词
2014/03/27 职场文书
教研活动总结
2014/04/28 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
纪检监察立案决定书
2015/06/24 职场文书
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL