关于function,new function 和 new Function
来源:互联网 发布:美图淘宝图片 编辑:程序博客网 时间:2024/06/04 19:32
在javascript中, function 是一个很特殊的存在,因为它本身便是一个对象。
1. 关于function 的基本用法:
function test(a,b){console.log(a+b)};test(1,2);3undefinedvar test=function(a,b){console.log(a+b)};test(1,2)3undefined
这就不用多说了,唯一的区别在于前者的function 有提升作用,不管放在文件的哪个地方,都可以使用,
可以这么写:test(1,2);function test(a,b){console.log(a+b)}; 但是后者就不行了。仅此而已。
2. 关于new function 和new Function.
谈这个之前,先 看看new在javascript中的意义和用处。new 主要用于对类进行实例化(虽然javascript中实际上没有类,姑且这么说吧。。),新建一个对象,例如:
var a=new object(); 但是请注意,new后面跟的实际上是该对象的构造函数,这一点对于理解关键字 new 至关重要!
那么 例子2 是什么意思呢?
例子2
大家可以看出来,匿名function执行了两次,证实了刚才所说的 new后面跟的是该对象的默认构造函数,在新建的时候执行了一次,在直接调用a.constructor的时候又执行了一次。而这段代码就是新建了对象a,而它的原始对象却是一个匿名对象,在这里只是提供了它的构造函数。a是一个对象,带一个构造函数而已。
记住:a不是后面那个function!不信?可以试一下:
3. new Function
功能和 1 的基本功能差不多是一样的,只是写法不同:
就是里面前面都是参数,后面是函数内容,具体执行语句。不过都要用字符串形式!
4. 好了,我们看看下面的例子:
function test(){return 'you\'re welcome!';};var v001=new function(){return 'you are welcome!';};alert(v001);var v002=new function(){return new String('you are welcome!';};alert(v002);
输出:[object][object]
you are welcome!
这是为什么? 这是因为在‘v002’中,第一个new 后面的构造函数如果返回一个引用类型的对象(new String创造的是一个object对象),会自动覆盖new创造匿名对象,然后赋值给v002。
- 关于function,new function 和 new Function
- function, new function, new Function
- function, new function, new Function
- function, new function, new Function
- function, new function, new Function
- 详解new function(){}和function(){}()
- 详解new function(){}和function(){}()
- 详解new function(){}和function(){}()
- eval 和 new Function
- new Function()
- new Function
- 关于javascript的函数function,new function和new Function的一些理解
- function,new function,new Function对比
- function,new function,new Function对比
- function,new function,new Function对比
- js中function new function new Function
- 详解new function(){}和function(){}() 区别分析
- function 与 new function 区别
- ADF中常用的代码
- 二分查找的递归与迭代实现
- Ios long值越界???int? long? long int? long long? long long int?
- 高级for循环
- LeetCode Reorder List O(n) space空间解法
- 关于function,new function 和 new Function
- 山东理工大学ACM平台题答案 C语言实验——打印数字图形 1179
- jQueryMobile的(二十) 滚屏事件(scrollstart、scrollstop)
- java中char和byte的转换
- Options warning: Bad backslash ('\') usage in cn1.ovpn:31: remember that backslashes are treated
- WCF 修改SOAP头
- Excel VBA入门(6) - Worksheet对象常用方法事件
- 无线城市掌上公交去广告
- C++ 单例模式