JavaScript中的函数与方法
在下面的示例中,是否只有一个函数或一个方法?我假设这是一个与img对象关联的方法。 有人能澄清这一点吗JavaScript中的函数与方法,javascript,html,canvas,Javascript,Html,Canvas,在下面的示例中,是否只有一个函数或一个方法?我假设这是一个与img对象关联的方法。 有人能澄清这一点吗 img.onload = function () { ctx.drawImage(img, 10, 10); ctx.drawImage(img, 170, 90); ctx.drawImage(img, 170, 170); }; 非常感谢,, PJavaScript中的“方法”只是引用函数的对象上的属性。发件人: 方法 作为属性值的函数 从这个意
img.onload = function () {
ctx.drawImage(img, 10, 10);
ctx.drawImage(img, 170, 90);
ctx.drawImage(img, 170, 170);
};
非常感谢,,
PJavaScript中的“方法”只是引用函数的对象上的属性。发件人:
方法 作为属性值的函数 从这个意义上讲,你所展示的是一个“方法”和一个“函数” 从另一个意义上讲,如果您将“方法”定义为“专门绑定到给定对象或对象类的函数”,JavaScript实际上根本没有方法(但保持读取)。(更多信息请访问我的博客:)例如,可以考虑<代码>切片>代码>方法>代码>数组< /Cord>对象,但是它可以用于任何其他你喜欢的对象(只要该对象是数组式的,因为否则“代码>切片< /代码>不知道该怎么做):
var o={
0:“零”,
1:"一",,
二:"两个",,
长度:3,
切片:Array.prototype.slice
};
console.log(o.slice(1))代码>JavaScript中的“方法”只是引用函数的对象上的属性。发件人:
方法
作为属性值的函数
从这个意义上讲,你所展示的是一个“方法”和一个“函数”
从另一个意义上讲,如果您将“方法”定义为“专门绑定到给定对象或对象类的函数”,JavaScript实际上根本没有方法(但保持读取)。(更多信息请访问我的博客:)
例如,可以考虑<代码>切片>代码>方法>代码>数组< /Cord>对象,但是它可以用于任何其他你喜欢的对象(只要该对象是数组式的,因为否则“代码>切片< /代码>不知道该怎么做):
var o={
0:“零”,
1:"一",,
二:"两个",,
长度:3,
切片:Array.prototype.slice
};
console.log(o.slice(1))代码>我倾向于说Javascript中的每个函数都是一个方法。但我不确定这是否合理。如果我错了,请纠正我
因此,方法有一个“this”,即受影响的对象
在您的示例中,此=img
img.onload = function () {
console.log(this);
...
}
任何函数都有“窗口”作为“this”,除非它有其他类似的东西。我倾向于说Javascript中的每个函数都是一个方法。但我不确定这是否合理。如果我错了,请纠正我
因此,方法有一个“this”,即受影响的对象
在您的示例中,此=img
img.onload = function () {
console.log(this);
...
}
任何函数都有“窗口”作为“this”,除非它还有其他类似的内容。方法是属于函数类型的属性。
如果没有正式的语言特定定义,人们应该始终遵循常见用法的隐含含义
计算机编程方面强>
- 方法是类的一部分,它可以返回值,也可以不返回值李>
- 函数是一组返回值的语句
- 过程是一组不返回值的语句
但如果有一种正式明确定义的语言,就应该使用它
Javascript的功能和方法
Javascript正式将术语函数定义为
…函数是可调用对象
方法为
通过属性与对象关联的函数称为方法
参考文献
这很糟糕,因为我一直在使用函数,现在必须将所有文档修订为正确的术语
矛盾
它还造成了用于描述和记录javascript代码的词汇语法方面的矛盾
所有可调用的函数/方法都是Function
对象,并且具有Function.prototype
。在严格意义上,只有在描述变量引用(或匿名)时才有函数
例如考虑
var poo = function(){}; // Method window.poo, function poo.
function Foo(){ // this is a function?
var tic = function(){}; // tic is a function
this.Bar = function(){ // this is a function as well as a method
this.poo = poo; // This is a method, it is also function
}
this.Boo = function(){
this.poo = function(){ return poo}; // anon function returns the poo
// to create the method Boo.poo
}
}
Top
是一个函数,因为它是一个可调用的对象。但它也是顶级作用域窗口
(或上下文顶级作用域)的一个属性,因此是窗口
的一种方法
因此,正如Javascript标准Foo
所定义的那样,Bar
和Boo
是函数,同时也是方法。如果像我这样学究式的程序员被迫遵守设计规范,编程中的这种模糊性可能是一个问题,可能会导致错误,或者更糟糕的设计审查
建议的“方法”和“函数”的词汇用法
就我个人而言,我会选择使用下面的单词function和method
- 所有可调用语句列表都是函数,这是它们的类型
- 我将调用它们函数,除非我引用它们是其属性的对象
- 当我引用它们作为属性的对象时,我将称它们为方法
- 如果使用包含JavaScript实现语言(通常是c++)的作用域进行文档记录,我将调用内部(隐藏在JavaScript上下文之外)可调用代码作为方法或函数,具体取决于它们是否返回值
从上面的代码
Foo
、Bar
、Boo
和poo
都是函数
Foo
是窗口的一种方法
Bar
是Foo
的方法
Bar
的方法poo
不起任何作用
Boo.poo
是一种方法
poo
是一个函数,这是它的类型
poo
是window
、Bar
和Boo
*
- “tic”是一个函数
- 没有名为
tic
的方法
- 方法
Bar.poo
在函数Bar
- 方法
Bar.poo
被定义为匿名函数
- 方法
Bar