JavaScript高级
每个JavaScript函数实际上都是一个Function对象
- 创建函数的3种方式
- 函数声明的方式
function 函数的名称(){}
- 函数表达式
var 函数名 = function(){}
var fn = function (){}
通过fn()获取
- 构造函数的创建
var 函数名 = new Function('a','alert(a)') 第一个指的是参数,第二个指的是函数体
- 函数的声明与函数的表达式区别
- 函数声明可以在任意可见位置调用(即在函数定义的前后即可)
- 函数表达式:必须先定义以后在进行调用
- 函数声明可以预加载(预解析),也就是函数声明有函数提升的作用 - 变量作用域
- 作用域的分类:全局作用域,局部作用域,块级作用域
- 全局:在任意位置都可以访问的范围(函数外部,函数内部可以)
- 全局变量会自动追加到window下
- 相关实例演示
function Foo(){
getName = function(){
alert(1)
}
return this;
}
Foo.getName=function(){alert(2)}
Foo.prototype.getName=function(){alert(3)}
var getName = function(){alert(4)}
function getName(){alert(5)}
Foo.getName() //2 (函数本身也是对象)
getName() //4 (函数的调用区别,函数的预解析)
Foo().getName() //1 (作用于和this指向)
getName() // 1
new Foo.getName() //2
new Foo().getName() //3 (原型链的概念)
new new Foo().getName()