JavaScript中函数的调用有多种,以下是我总结的4种调用方式:
第一种:直接调用,一般指向window对象
第二种:对象调用,一般指向调用对象
第三种:call/apply调用,一般指向函数运行你的作用域
第四种:new,一般指向调用后产生的对象
备注:放在代码段里是为了方面测试和学习
//fun()
//stu.fun()
//fun.call/apply(this,参数)
//new fun()
//(1)直接调用
var name = 'lpen'
function person(name) {
alert(this.name);
//alert(name);
}
person();//指向window
// person('joy')*/
//(2)对象调用
var name = 'lpen';
var age = 27;
var stu = {
name:'joy',
age:23,
student:function () {
alert(this.name);
alert(this.age);
}
};
stu.student();//指向stu
//(3)call/apply
var name = 'lpen';
var age = 27;
var stu = {
name:'joy',
age:23
};
function student() {
alert(this.name);
alert(this.age);
}
//student.call(stu,'lisi',22);//指向stu
student.apply(stu,['lisi',23]);//指向stu
// call("在其中运行函数的作用域","函数列表")
//apply("在其中运行函数的作用域","函数数组")
//总结:这两个方法的作用都是在特定的作用域中调用函数,实际上等于设置函数内部属性this的值
//(4)new来调用
function Person(name,age) {
this.name = name;
this.age = age;
this.sayHello = function () {
alert(this.name);
}
}
var p1 = new Person('joy',23);
p1.sayHello();//this指向实例p1