javaScript基础六
有四种方式调用JavaScript
一、作为函数
//判断当前是否为严格模式 这个是即时调用函数 定义了一个函数,然后调用它
var strict=(function(){return !this;}());
二、作为方法调用
如果有一个函数f和一对象o,则可以给o定一个名为m()的方法
o.m=f;
调用的时候:
o.m();
或者有参数
o.m(x,y); 另一种写法 o["m"](x,y)
三、作为构造函数
没有形参的构造函数调用都可以省略圆括号
var o=new Object();
var o=new Object();
尽管构造函数看起来是一个方法调用,但是他依然使用这个新对象作为调用上下文。也就是new o.m()中调用上下文的并不是o
四、间接调用。通过call() apply() 方法间接调用。
函数的调用和匿名调用
//直接定义并调用
function mymodule{
........
}
//进行调用
mymodule();
//使用匿名的函数,并实现自动的调用
(function(){
......
}()); //函数结束后就立即的调用他
//注意左边的圆括号,这是必须的,如果不写就解释器就会认为是函数的声明。 函数的定义后面会发现有() 表示的是函数的调用。
闭包:函数对象可以通过作用域链互相关联起来,函数体内部的变量都可以保存在函数的作用域中,这种特性为“闭包”
var scope="global scope";//全局变量
function checkscope(){
var scope="loacal scope";//局部变量
function f(){
return scope;
}
return f;
}
//注意这里返回的是f这个对象是函数的对象,并没有被调用
checkscope()(); //这里相当于f() , 应该返回的是局部变量
//闭包:函数定义时的作用域链到函数执行的时候仍然有效。
call() apply() 方法
我们将他们看做某个对象的方法,call()和apply()的第一个实参是要调用函数的母对象。他是调用上下文。
Function()构造函数 创建新的函数
var f=new Function("x","y","return x*y;");
等价:
var f=function(x,y){return x*y};