有关JavaScript定义函数

JavaScript中的函数是Function的对象,那么函数对象是什么时候创建的呢?比如我声明了一个对象,是不是就创建了一个函数对象?

还有,为什么不推荐用Function构造函数模式定义函数呢?

1,除了函数对象,还有很多内部对象
所有typeof返回 “function”的对象都是函数对象

2,因为每构造一个对象就会生成一个alertUrl方法,这样太浪费资源空间,所以把alertUrl这个方法写在全局以节省空间,但这样写就违背了面向对象编程的初衷,下面的原型模式就更好一些。https://www.cnblogs.com/yonglin/p/6262896.html

js new对象发生了事情:
创建空对象
把this指向空对象
赋值
方法中的this指代 new 出来的对象。

Function构造函数模式定义函数,从技术角度讲,这是一个函数表达式。一般不推荐用这种方法定义函数,因为这种语法会导致解析两次代码(第一次是解析常规ECMAScript代码,第二次是解析传入构造函数中的字符串),从而影响性能。

Function()构造函数每次执行时都会解析函数主体,并创建一个新的函数对象,所以当在一个循环或频繁执行的函数中调用Function()构造函数效率是非常低的。而函数字面量却不是每次遇到都会重新编译的,用Function()构造函数创建一个函数时并不遵循典型的作用域,它一直把它当作是顶级函数来执行。

1,除了函数对象,还有很多内部对象
所有typeof返回 “function”的对象都是函数对象

2,因为每构造一个对象就会生成一个alertUrl方法,这样太浪费资源空间,所以把alertUrl这个方法写在全局以节省空间,但这样写就违背了面向对象编程的初衷,下面的原型模式就更好一些。https://www.cnblogs.com/yonglin/p/6262896.html

使用Function构造器生成的Function对象是在函数创建时解析的。这比你使用函数声明或者函数表达式(function)并在你的代码中调用更为**低效**,因为使用后者创建的函数是跟其他代码一起解析的。
详细参考:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function

而且如果你的函数代码体很复杂,你用Function就很麻烦了,特别涉及到dom的组装,转义就要搞死人

除了函数对象,还有很多内部对象
所有typeof返回 “function”的对象都是函数对象

函数一般配合事件使用吧,