为什么我们需要在此脚本中调用“ c.set.bind(c)”?

安东尼·孔

这是示例中javascript的网址:https : //github.com/madbence/node-drawille/blob/master/examples/clock.js

这是示例脚本的全文

var Canvas = require('../');
var line = require('bresenham');

var c = new Canvas(160, 160);

function draw() {
  c.clear();
  var t = new Date();
  var sin = function(i, l) {
    return Math.floor(Math.sin(i*2*Math.PI)*l+80);
  }, cos = function(i, l) {
    return Math.floor(Math.cos(i*2*Math.PI)*l+80);
  };
  line(80, 80, sin(t.getHours()/24, 30), 160-cos(t.getHours()/24, 30), c.set.bind(c));
  line(80, 80, sin(t.getMinutes()/60, 50), 160-cos(t.getMinutes()/60, 50), c.set.bind(c));
  line(80, 80, sin(t.getSeconds()/60+(+t%1000)/60000, 75), 160-cos(t.getSeconds()/60+(+t%1000)/60000, 75), c.set.bind(c));
  process.stdout.write(c.frame());
}

setInterval(draw, 1000/24);

我不太明白为什么c.set.bind(c)line函数调用中这样

乔纳斯

因为set是一个功能。您正在传递Function对象作为参数。如果set内部使用函数,thisthis运行时的值取决于调用对象。要使其正确引用this而不管调用对象是什么,您都需要使用bind

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我们需要在C#中锁定并反对?

来自分类Dev

为什么我们需要C ++中的虚函数?

来自分类Dev

为什么我们需要在Windows C ++中链接kernel32.dll,user32.dll等?

来自分类Dev

为什么我们需要在 C++20 中的函数概念参数之后使用 auto?

来自分类Dev

为什么我们需要在C ++头文件中使用“ #if defined Identifier”?

来自分类Dev

为什么我们需要在C#中装箱和拆箱?

来自分类Dev

为什么我们需要声明枚举变量?(C)

来自分类Dev

为什么我们需要C ++中的纯虚拟析构函数?

来自分类Dev

为什么我们在C ++中需要飞船<=>运算符?

来自分类Dev

为什么我们需要C中的终止符

来自分类Dev

为什么在C#方法中我们需要多个`await`语句?

来自分类Dev

为什么我们需要C ++中的基本数据类型

来自分类Dev

为什么我们在这个程序中需要虚拟(Turbo C++)?

来自分类Dev

为什么我们必须在Java脚本(Razor)中对C#代码使用引号

来自分类Dev

为什么我们必须等待C#中的异步方法调用

来自分类Dev

为什么我们需要指针为Go / C中的变量分配值,而不是C#/ Java中的指针

来自分类Dev

为什么需要在此C ++模板中指定类型?

来自分类Dev

为什么我们需要对象发送者作为 c# 中的参数事件处理程序?

来自分类Dev

为什么在C语言的套接字编程中我们需要服务器本身的IP地址

来自分类Dev

为什么我们需要一个默认的构造函数来在C ++中通过引用传递对象?

来自分类Dev

如果C ++编译为机器代码,为什么我们需要安装“运行时”?

来自分类Dev

在 C 中使用指针时,我们何时以及为什么需要使用 malloc?

来自分类Dev

C 为什么我们需要`execv()` 进行重定向?

来自分类Dev

为什么我们需要进行软件复位,I2C 协议?

来自分类Dev

为什么需要在 JS 中等待 AJAX 调用,而在 C# 中不需要?

来自分类Dev

在C ++中我们需要双重调度/访问者的情况究竟发生了什么

来自分类Dev

为什么我们不能在C#中的结构中定义数组

来自分类Dev

请说明条件变量在c ++线程中的用法,以及为什么我们需要与此一起使用`unique_lock`和`mutex`

来自分类Dev

为什么向上转换可以直接在c#中完成,但是为了向下转换,我们需要强制转换?

Related 相关文章

  1. 1

    为什么我们需要在C#中锁定并反对?

  2. 2

    为什么我们需要C ++中的虚函数?

  3. 3

    为什么我们需要在Windows C ++中链接kernel32.dll,user32.dll等?

  4. 4

    为什么我们需要在 C++20 中的函数概念参数之后使用 auto?

  5. 5

    为什么我们需要在C ++头文件中使用“ #if defined Identifier”?

  6. 6

    为什么我们需要在C#中装箱和拆箱?

  7. 7

    为什么我们需要声明枚举变量?(C)

  8. 8

    为什么我们需要C ++中的纯虚拟析构函数?

  9. 9

    为什么我们在C ++中需要飞船<=>运算符?

  10. 10

    为什么我们需要C中的终止符

  11. 11

    为什么在C#方法中我们需要多个`await`语句?

  12. 12

    为什么我们需要C ++中的基本数据类型

  13. 13

    为什么我们在这个程序中需要虚拟(Turbo C++)?

  14. 14

    为什么我们必须在Java脚本(Razor)中对C#代码使用引号

  15. 15

    为什么我们必须等待C#中的异步方法调用

  16. 16

    为什么我们需要指针为Go / C中的变量分配值,而不是C#/ Java中的指针

  17. 17

    为什么需要在此C ++模板中指定类型?

  18. 18

    为什么我们需要对象发送者作为 c# 中的参数事件处理程序?

  19. 19

    为什么在C语言的套接字编程中我们需要服务器本身的IP地址

  20. 20

    为什么我们需要一个默认的构造函数来在C ++中通过引用传递对象?

  21. 21

    如果C ++编译为机器代码,为什么我们需要安装“运行时”?

  22. 22

    在 C 中使用指针时,我们何时以及为什么需要使用 malloc?

  23. 23

    C 为什么我们需要`execv()` 进行重定向?

  24. 24

    为什么我们需要进行软件复位,I2C 协议?

  25. 25

    为什么需要在 JS 中等待 AJAX 调用,而在 C# 中不需要?

  26. 26

    在C ++中我们需要双重调度/访问者的情况究竟发生了什么

  27. 27

    为什么我们不能在C#中的结构中定义数组

  28. 28

    请说明条件变量在c ++线程中的用法,以及为什么我们需要与此一起使用`unique_lock`和`mutex`

  29. 29

    为什么向上转换可以直接在c#中完成,但是为了向下转换,我们需要强制转换?

热门标签

归档