1.2、什么是函数?什么是方法

1,718 阅读1分钟

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 方法 执行上下文指向该方法所属的对象