function, new function, new Function

简介:
 函数是JavaScript中很重要的一个语言元素,并且提供了一个function关键字和内置对象Function,下面是其可能的用法和它们之间的关系。

    使用方法一:
  var foo01 =  function() //or fun01 = function()
 {
     var temp = 100;
     this.temp = 200;
     return temp +  this.temp;
 }

 alert( typeof(foo01));
 alert(foo01());
    运行结果:
  function
 300
    最普通的function使用方式,定一个JavaScript函数。两种写法表现出来的运行效果完全相同,唯一的却别是后一种写法有较高的初始化优先级。在大扩号内的变量作用域中, this指代foo01的所有者,即window对象。

    使用方法二:
  var foo02 =  new  function()
 {
     var temp = 100;
     this.temp = 200;
      return temp +  this.temp;
 }

 alert( typeof(foo02));
 alert(foo02.constructor());
    运行结果:
 object
 300
    这是一个比较puzzle的function的使用方式,好像是定一个函数。但是实际上这是定一个JavaScript中的用户自定义对象,不过这里是个匿名类。这个用法和函数本身的使用基本没有任何关系,在大扩号中会构建一个变量作用域, this指代这个作用域本身。

    使用方法三:
  var foo3 =  new Function( ' var temp = 100; this.temp = 200; return temp + this .temp;');

 alert( typeof(foo3));
 alert(foo3());
    运行结果:
  function
 300
    使用系统内置函数对象来构建一个函数,这和方法一中的第一种方式在效果和初始化优先级上都完全相同,就是函数体以字符串形式给出。

    使用方法四:
  var foo4 = Function(' var temp = 100;  this.temp = 200;  return temp +  this.temp;');

 alert( typeof(foo4));
 alert(foo4());
    运行结果:
function
300
    这个方式是不常使用的,效果和方法三一样,不过不清楚不用 new来生成有没有什么副作用 ,这也体现了JavaScript一个最大的特性:灵活!能省就省。

    关于函数初始化优先级这个问题,可以参看:"JS类定义原型方法的两种实现的区别"的回复。


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。


目录
相关文章
|
中间件
解构如何运用的解构--报错 throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
解构如何运用的解构--报错 throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
解构如何运用的解构--报错 throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
构造函数(function)可以使用 new 生成实例,箭头函数可以吗
构造函数使用 `new` 关键字可以生成实例对象,而箭头函数则不能用作构造函数,因为它没有自己的 `this` 上下文,使用 `new` 调用会抛出错误。
|
JSON 自然语言处理 JavaScript
深入理解Js里new Function语法
深入理解Js里new Function语法
|
JavaScript 中间件
node.js 报错 throw new TypeError(‘app.use() requires a middleware function‘)
node.js 报错 throw new TypeError(‘app.use() requires a middleware function‘)
714 0
|
JavaScript 前端开发 C++
在AngularJS中学习javascript的new function意义及this作用域的生成过程
慢慢入门吧,不着急。 至少知道了controller和service的分工。 new function时,隐含有用this指向function的prototype之意。 这样,两个JAVASCRIPT难点,作用域及原型域得以统一。
1267 0
|
Web App开发 JavaScript 前端开发
new Function()
原文链接: new Function() 原文日期: 2014年3月2日翻译日期: 2014年3月14日 翻译人员: 铁锚 JavaScript的精神领袖Douglas Crockford曾说过JavaScript是程序员唯一不需要学习就能直接使用的语言. 在编程中确实是如此。
830 0
|
人工智能 Python
083_类_对象_成员方法_method_函数_function_isinstance
本内容主要讲解Python中的数据类型与面向对象基础。回顾了变量类型(如字符串`str`和整型`int`)及其相互转换,探讨了加法在不同类型中的表现。通过超市商品分类比喻,引出“类型”概念,并深入解析类(class)与对象(object)的关系,例如具体橘子是橘子类的实例。还介绍了`isinstance`函数判断类型、`type`与`help`探索类型属性,以及`str`和`int`的不同方法。最终总结类是抽象类型,对象是其实例,不同类型的对象有独特运算和方法,为后续学习埋下伏笔。
282 7
083_类_对象_成员方法_method_函数_function_isinstance
|
Python
[oeasy]python086方法_method_函数_function_区别
本文详细解析了Python中方法(method)与函数(function)的区别。通过回顾列表操作如`append`,以及随机模块的使用,介绍了方法作为类的成员需要通过实例调用的特点。对比内建函数如`print`和`input`,它们无需对象即可直接调用。总结指出方法需基于对象调用且包含`self`参数,而函数独立存在无需`self`。最后提供了学习资源链接,方便进一步探索。
335 17

热门文章

最新文章