在 JavaScript 中,函数什么时候变成方法?
In JavaScript when does a function become a method?
在 JavaScript 中,函数是作为 属性 添加到对象上时成为方法,还是函数针对对象的 调用使其成为方法的对象?
the specification中的定义是:
function that is the value of a property
由于每个函数 javascript 都是对象的一部分,从技术上讲它们都是方法。
就我个人而言,我会把区别放在绑定到一个对象上,如果你将一个函数绑定到一个特定的范围,它就是一个方法。
从技术上讲,javascript 没有技术上面向对象的方法。而是使用对象继承的原型模型(例如javascript没有class继承而是原型继承,不支持私有方法等,这些是两种模型的区别,例如"Javascript, the good parts").
无论如何,作为对象的 属性 添加的任何函数都可以作为对象的方法调用,例如 obj.my_method()
并且函数内部的 this
将动态地访问当前 object
另一种调用函数就好像它是方法 的方法是使用.call
功能。例如 my_method.call(obj)
这也是在 javascript 中使用私有方法的替代方法。可以定义一个函数,它不能作为对象 属性 访问,但可以像对象的方法一样调用,使用 .call
将函数内部的 this
绑定到当前对象。人们可以争辩说,以这种方式(或类似方式)调用的任何函数确实是 method
,我不会争论它,也不会说别的。
喋喋不休地谈论术语不是编码。玩得开心
在 JavaScript 中,函数是作为 属性 添加到对象上时成为方法,还是函数针对对象的 调用使其成为方法的对象?
the specification中的定义是:
function that is the value of a property
由于每个函数 javascript 都是对象的一部分,从技术上讲它们都是方法。
就我个人而言,我会把区别放在绑定到一个对象上,如果你将一个函数绑定到一个特定的范围,它就是一个方法。
从技术上讲,javascript 没有技术上面向对象的方法。而是使用对象继承的原型模型(例如javascript没有class继承而是原型继承,不支持私有方法等,这些是两种模型的区别,例如"Javascript, the good parts").
无论如何,作为对象的 属性 添加的任何函数都可以作为对象的方法调用,例如 obj.my_method()
并且函数内部的 this
将动态地访问当前 object
另一种调用函数就好像它是方法 的方法是使用.call
功能。例如 my_method.call(obj)
这也是在 javascript 中使用私有方法的替代方法。可以定义一个函数,它不能作为对象 属性 访问,但可以像对象的方法一样调用,使用 .call
将函数内部的 this
绑定到当前对象。人们可以争辩说,以这种方式(或类似方式)调用的任何函数确实是 method
,我不会争论它,也不会说别的。
喋喋不休地谈论术语不是编码。玩得开心