无法在同一类 JS 的另一个方法中调用方法

2023-12-30

我试图在同一类的方法 connect 中调用方法 test 。但我得到的只是“未捕获类型错误:无法读取未定义的属性‘测试’”。 如何访问 sftp 回调内的任何变量? 为什么会这样呢?

这是我的代码:

const SSH2 = require('ssh2').Client;
class SshClient {
  constructor(host, username, password) {
    this.host = host;
    this.username = username;
    this.password = password;
    this.port = 22;
    this.client = null;
  }

  test(testvar) {
    console.log(testvar);
  }

  connect() {
    this.client = new SSH2();
    let client = this.client;
    let username = this.username;
    this.client.connect({
      host: this.host,
      port: this.port,
      username: this.username,
      password: this.password
    });
    this.client.on('ready', function() {
      console.log('Client :: ready', client);
      client.sftp(function(err, sftp) {
        if (err) throw err;
        sftp.readdir('/home/' + username, function(err, list) {
          if (err) throw err;
          console.dir(list);
          this.test('hey');
          client.end();
        });
      });
    });
  }
}

let ssh = new SshClient('host', 'username', 'password');
ssh.connect();

使用时function() {你正在进入一个新的环境,这不是你的班级环境。使用es6 arrow functions,您可以轻松地将类上下文共享到内部函数中。


  this.client.on('ready', () => {
      client.sftp((err, sftp) => {
        if (err) throw err;

        sftp.readdir('/home/' + username, (err, list) => {
          if (err) throw err;

          this.test('hey');

          client.end();
        });
      });
    });

Here https://derickbailey.com/2015/09/28/do-es6-arrow-functions-really-solve-this-in-javascript/是一篇关于如何es6 arrow functions工作原理以及它们如何影响this.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在同一类 JS 的另一个方法中调用方法 的相关文章

  • Razorpay 支付集成 -> 我如何检测关闭按钮 X 附近的 razorpay 模型

    我在 CI 框架中使用 Razorpay 当用户在没有付款的情况下关闭时 创建 razor 支付模型 然后对于取消订单 我希望通过状态更改为已取消来触发查询 那么我怎样才能检测到这一点 我已经在使用 by click jQuery 点击关闭
  • 如果 JavaScript 中未定义,则设置变量

    我知道我可以测试 JavaScript 变量 然后定义它 如果是 undefined 但是有没有什么办法可以说 var setVariable localStorage getItem value 0 似乎是一种更清晰的方式 而且我很确定我
  • 如何检查 webgl(two.js) 的客户端性能

    我有一个使用 Three JS 的图形项目 现在我想自动检查客户端 GPU 性能并计算可以在应用程序中加载多少元素 我想到了诸如 GPU 基准测试之类的东西 看一眼stats js https github com mrdoob stats
  • 替换后正确的子串位置

    我有一个由用户提供的这样的函数 function replace function string return string replace smile g replace foo bar baz g text 1 我有这样的输入字符串 v
  • 在全局范围内查找 JavaScript 函数

    有没有办法在当前活动的对象模型中搜索 JavaScript 属性 例如命名函数 Firebug 在 DOM 选项卡上显示的内容 我在 Chrome 开发人员工具中找不到直接等效项 加载页面 使用主要浏览器的通用开发人员工具 一个例子是 我搜
  • WordPress ~ 如何在一页上显示多个 Google Chart?

    下面是我插入到 WordPress Visual Composer 中的原始 HTML 块中的一个 Google 图表的代码 图表 ID 名称为 chart div1 这适用于我的 WP 网页
  • 由于运行 Javascript,Firefox 选择下拉列表不断刷新/恢复为默认选项 - AngularJS

    我正在 AngularJS 中构建一个应用程序 但在使用 Firefox 时无法选择下拉菜单 当我单击选择菜单并将鼠标悬停在选项上时 它会将所选选项从光标悬停的选项重置为默认 第一个选项 当选项数量很大时 选择正确的选项变得非常困难 该应用
  • 我担心我添加了太多接口

    我正在构建我的领域模型并继续重构它 正如我所做的那样 我发现我喜欢接口 因为它允许我根据接口为具体类型创建可重用的方法 控制器 视图 但是 我发现每次向域实体之一添加新属性时 我都会创建一个接口 例如 我有一个会员状态从抽象继承的对象Ent
  • 您可以编写期望抛出异常的异步测试吗?

    我正在编写一个异步测试 期望异步函数像这样抛出 it expects to have failed async gt let getBadResults async gt await failingAsyncTest expect awai
  • 设置 D3 力定向图

    致尊敬的读者 我对 javascript 相当陌生 我也遇到过这个问题 我正在尝试实现这个力导向图的修改版本 http mbostock github com d3 ex force html http mbostock github co
  • Vim、Javascript、DoctorJS (jsctags) 和 Taglist(源代码浏览)

    我已经安装了DoctorJS http doctorjs org 之前jsctags 试图为 Vim 获得一些好的源代码浏览 标签列表 使用Taglist http www vim org scripts script php script
  • 如何在 Yii 框架中使用 jQuery?

    如何在 yii 中使用 jquery javascript 如何在 yii 中使用我的脚本 为什么这与以其他方式使用 jQuery 有什么不同 如何在yii中使用jquery 如上所述 您可以注册新的脚本块 也可以注册新的外部脚本文件 您还
  • 如何从客户端 JavaScript 调用特定的 Node.js 方法

    在我的应用程序中 我在 node js 文件中创建了许多方法 我如何从客户端 JavaScript 调用特定方法 下面是我的node js 文件 exports method1 function exports method2 functi
  • 如何使用nodejs获取目录中第一个扩展名为.txt的文件?

    我所有文件所在的目录是 usr home jordan 该目录下有很多文件 在目录本身中 但有一个文件以 txt 扩展名命名 使用nodejs和fs 我想将带有txt扩展名的第一个文件 或任何文件 放入 mytxtfilepath 中 我在
  • Angularjs + Typescript,如何将 $routeParams 与 IRouteParamsService 一起使用

    我使用 routeParams 从 URI 中提取属性并为其设置本地变量 当我使用打字稿输入设置 route 参数的类型时 我无法再访问 route 参数 如何访问 routeParams 中的属性 class Controller con
  • 将 SVG 下载为 PNG 图像

    我想将 HTML 页面中的 SVG 元素下载为 PNG 格式 我尝试了此操作 但下载了一个空白的 PNG 图像 如何将我的 HTML SVG 下载为 PNG 我用过这个https bl ocks org biovisualize 81878
  • Mongodb 的 Mongoose 与 Mongoose

    我正在学习 NodeJ 要从 NodeJS 连接并使用 MongoDB 我看到很多使用 Monk 或 Mongoose 的示例 这两个库等效吗 它们具有相同的功能还是都有特定的用途 作为 NodeJS 的初学者 我应该使用哪个 以下是使用
  • 猫鼬递归填充

    我已经搜索了一段时间 但没有找到任何好的答案 我有n deep我存储在数据库中并且想要填充的树所有的父母所以最后我得到了完整的树 node parent parent parent 到目前为止 我已达到 2 级 正如我提到的 我需要达到 2
  • iOS Javascript 引擎 parseFloat(1) 返回负数

    这段代码将使错误出现 function causeBug d var k var n parseFloat 1 var c Math abs d if n lt 0 k else k return k n function for var
  • JavaScript - 替换 html 字符串中的特定单词索引

    我在 JS 字符串操作方面面临着一项具有挑战性的任务 有一个 HTML 字符串 我需要在其中替换特定单词索引处的单词 单词索引是忽略 HTML 标签时单词的编号 例如 下面是 HTML 字符串 span style font family

随机推荐

  • 如何定义取决于模板参数的字符类型的字符串文字?

    template
  • 如何按 dict 列过滤 pandas 数据框?

    给定一个数据帧 df serialnumber basicinfo 列 basicinfo 是一个字典 name xxx model xxx studyid xxx 有没有一种简单的方法可以通过字典键 模型 过滤此数据框 如果它是整数 我们
  • 正确实施乒乓球比赛

    我在一项作业中被要求实现正确调用 ping 和 pong 意思是在 ping 之前没有 pong 10 次的乒乓球游戏 意思是 控制台中的最终输出应该是 ping 1 pong 1 ping 2 pong 2 等 需求是用信号量 可重入锁和
  • 如何使用 selenium python 更改/删除样式属性?

    我想知道是否可以更改或删除 显示 无 在元素中使其在 python 中使用 selenium 可见
  • jquery的attr()是异步的吗?

    假设我有一个循环 它在每次迭代时都会附加一个带有 img 标签的 div 然后使用如下所示加载其 src 属性 img last attr src imageSource 如果我对几个不同的图像进行几次迭代 我是否会异步加载这些图像 如果没
  • Android 文本转语音男声

    我有一个工作文本到语音 但我想知道当应用程序调用它播放时 它会用男声代替女声吗 现在可以使用男声 女声并从应用程序 UI 动态更改 像这样定义 TTS 在构造函数中添加 google tts 引擎 tts new TextToSpeech
  • Android Canvas重做和撤消操作

    我正在做一个绘图项目 除了画布重做和撤消操作之外 我的代码运行良好 我的撤消操作从pathsArrayList 并保存到undonePathsArrayList 重做操作删除最后一个元素undonePaths并保存到paths 这是我的代码
  • 在 ntier 应用程序中传递数据

    如何将数据传递到 n 层应用程序中的层 我已经制定了 3 种不同的方法 A 通用 net 对象通用数据表 哈希表 通用数据集 字符串 整数等 然后使用数据集填充发送到 UI 层的业务对象 替代文本 http img11 imageshack
  • UIKeyboardWillShowNotification 不调用,仅 UIKeyboardWillHideNotification 在 iOS 9 中调用

    在 iOS 8 之前一切都运行良好 但是 当用户点击文本字段控件时 直接出现在 UIKeyboardWillHideNotification 通知中 登录控制台 找不到支持4型键盘iPhone PortraitTruffle NumberP
  • OpenGL ES 2.0 :glReadPixels() 带有 float 或 half_float 纹理

    我正在为 iPhone iOS 4 1 编写一个 OpenGL ES 2 0 应用程序 在着色器中完成的计算结束时 我需要将一些数据写回 CPU 据我所知 这可以通过 glReadPixels 来完成 为了保持精度 我想在着色器之间使用 h
  • 使用 python 和 twitterApi 将多个图像添加到推文中?

    您好 我一直在尝试使用 python 中的 twitterAPI 模块将四个图像添加到推文中 不幸的是 下面的代码仅渲染推文中数据中的其中一个图像 有人可以指出我在推文中附加四张图片的正确方向吗 我的代码如下 减去导入和密钥 api Twi
  • 求解积分极限

    我需要以数值方式找到积分的极限 并知道该积分的结果 我需要解决的是 正如你所看到的 这是不完整的 beta 函数 我知道a b and c 积分极限来自0 to x 我需要找到x The fzero函数可以求解各种非线性方程 首先 计算不完
  • pthread_create内存泄漏

    我使用C语言和Linux作为我的编程平台 在我的应用程序中 我调用 pthread create 然后我使用 ps 命令行工具检查应用程序的内存使用情况 它在 VSZ 列中添加了 4 但问题是当pthread create函数处理程序退出时
  • 从 UIImage 转换为 SwiftUI Image 会产生相同大小的空白图像

    我正在尝试转换UIImage https developer apple com documentation uikit uiimage到 SwiftUIImage https developer apple com documentati
  • Javascript 即时创建

    我有一个与此类似的链接 a href home category blog 1 Blog a 如您所见 该链接的 ID 为 博客 我想要做的是使用所单击的链接中的 ID 动态创建一个 div 因此如果单击 博客 则标记将为 div div
  • Identity Server 4 无限循环

    我正在开发一个 asp net core 2 1 项目 其中安装了身份服务器 4 用户使用实体框架存储在 SQL 数据库中 Web 项目有一个登录页面和登录成功后的仪表板 请在 Startup cs 中找到以下代码 public class
  • 如何将图像从 Parse 加载到 UIImageView (iOS)

    我可能会问一些非常简单的问题 但我无法找到对我有帮助的教程或示例 我已经学会了如何从 Parse 检索字符串数据 现在我正在尝试检索图像 认为这会更容易 但我无法弄清楚 我正在尝试加载 1 张图像 我每天都会更改 UIImageView 从
  • Firebase - 'pushWithPriority' - 和验证

    我真的很想 优先推动 但这不存在 所以我计划进行不带参数的推送 然后使用返回的引用进行 setWithPriority 与文档中的示例类似 var messageListRef new Firebase https samplechat f
  • 可以在没有模拟器的情况下运行 Azure 缓存预览版吗?

    我们在应用程序中使用一些 Azure 特定功能 主要是 Blob 存储 借助 Blob 存储 我们弄清楚了如何在不需要运行缓慢的 Azure 模拟器的情况下运行它 我们现在正在试验 Azure 缓存预览版 它做了一些非常酷的事情 并且可以帮
  • 无法在同一类 JS 的另一个方法中调用方法

    我试图在同一类的方法 connect 中调用方法 test 但我得到的只是 未捕获类型错误 无法读取未定义的属性 测试 如何访问 sftp 回调内的任何变量 为什么会这样呢 这是我的代码 const SSH2 require ssh2 Cl