1.2、什么是函数?什么是方法
在javascript中,函数和方法的区分 有助于理解js执行上下文关系,基于原型的继承方式。
什么是函数
通过function或字面量定义的function类型的变量 我们称之为函数。
function f(){};
或var f = function(){
}
console.log(typeof f); //function
复制代码
什么方法
方法是一种特殊的函数。 如果一个对象的某个属性指向的是一个函数,站在该对象的角度上说,那么就把这个函数称之为它的一个方法。
function f(){
}
var obj = {
p:f
}
或
var obj = {
p:function(){
}
}
这种情况定义的函数我们称之为方法
复制代码
函数和方法区别
函数当前普通函数调用时,执行上下文(this)指向的时全局对象window;而方法的执行上下文指向的是该方法所属的对象。
function f(){
return this;
}
console.log(f() === window); //true 说明执行上下文直接指向的是window
var obj = {
p:function(){
return this;
}
}
console.log(obj.p() === obj); //true //说明执行上下文指向的是所属的对象
那么大家思考一下以下的执行结果
var obj = {
p:function(){
return this;
}
}
var exp = obj.p;
console.log(exp() === obj); //?
console.log(exp() === window); //?
复制代码
小结
函数 执行上下文指向全局对象window 方法 执行上下文指向该方法所属的对象