Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的函数与方法_Javascript_Html_Canvas - Fatal编程技术网

JavaScript中的函数与方法

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对象关联的方法。 有人能澄清这一点吗

 img.onload = function () {
    ctx.drawImage(img, 10, 10);   
    ctx.drawImage(img, 170, 90);  
    ctx.drawImage(img, 170, 170); 
  };
非常感谢,, P

JavaScript中的“方法”只是引用函数的对象上的属性。发件人:

方法

作为属性值的函数

从这个意义上讲,你所展示的是一个“方法”和一个“函数”

从另一个意义上讲,如果您将“方法”定义为“专门绑定到给定对象或对象类的函数”,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