未定义的NodeJS'toUpperCase'(从打字稿生成)

他的

当我从nodejs启动时,这为什么起作用:

var a = function (name) {
        return "Hello, " + name.toUpperCase();
    };
var result = a("bob");

console.log(result)

但是这个:

var A = (function () {
    function A(msg) {
        this.msg = " ";
        this.msg = msg;
    }
    A.prototype.hello = function (name) {
        return "Hello, " + name.toUpperCase();
    };
    A.prototype.helloToBob = function (fn) {
        return fn.apply("Bob");
    };
    return A;
})();
var test = new A("some message");
var msg = test.hello("Bob1");
var msg2 = test.helloToBob(test.hello);
console.log(msg);

失败与:

    return "Hello, " + name.toUpperCase();
                            ^ TypeError: Cannot call method 'toUpperCase' of undefined

从TypeScript代码生成/编译的JS代码。(无错误编译)

jfriend00

问题出在这行代码中。

 return fn.apply("Bob");

这里有几个问题。

  1. 的第一个参数必须.apply(obj, arrayOfArguments)是您要this在方法调用期间将指针设置为的对象

  2. 的第二个参数.apply()参数数组,而不是单个参数。

这是一个可能的解决方案,您将其this用作对象并切换到该位置,fn.call()因为fn.apply()它接受一个参数数组,但是只有一个参数。

更改此:

 return fn.apply("Bob");

对此:

return fn.call(this, "Bob");

并且,所有代码在一起:

var A = (function () {
    function A(msg) {
        this.msg = " ";
        this.msg = msg;
    }
    A.prototype.hello = function (name) {
        return "Hello, " + name.toUpperCase();
    };
    A.prototype.helloToBob = function (fn) {
        return fn.call(this, "Bob");
    };
    return A;
})();
var test = new A("some message");
var msg = test.hello("Bob1");
var msg2 = test.helloToBob(test.hello);
console.log(msg);

仅供参考,还有其他解决方案。您也可以这样做:

var A = (function () {
    function A(msg) {
        this.msg = " ";
        this.msg = msg;
    }
    A.prototype.hello = function (name) {
        return "Hello, " + name.toUpperCase();
    };
    A.prototype.helloToBob = function (fn) {
        return fn("Bob");
    };
    return A;
})();
var test = new A("some message");
var msg = test.hello("Bob1");
var msg2 = test.helloToBob(test.hello.bind(test));
console.log(msg);

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法读取未定义的属性“toUpperCase”(“

来自分类Dev

从打字稿节点中的异步等待中获取未定义

来自分类Dev

从打字稿节点中的异步等待中获取未定义

来自分类Dev

不能要求从打字稿的NodeJS默认文件的导出函数

来自分类Dev

未捕获的TypeError:无法读取未定义的属性“ toUpperCase”

来自分类Dev

打字稿.length返回未定义

来自分类Dev

打字稿导入的对象未定义

来自分类Dev

打字稿中未定义的属性

来自分类Dev

从打字稿文件生成npm模块

来自分类Dev

打字稿模块:已定义未定义

来自分类Dev

明确定义后,为什么会得到未定义的“ toUpperCase”?

来自分类Dev

Uncaught TypeError:无法读取未定义反应状态项的属性“ toUpperCase”

来自分类Dev

从打字稿中的数组中的字符串派生键以定义对象属性名称

来自分类Dev

打字稿中未定义与未分配的变量

来自分类Dev

意外的打字稿,这是未定义的类型

来自分类Dev

未捕获的ReferenceError:define未定义打字稿

来自分类Dev

调试会话期间打字稿未定义的常量

来自分类Dev

打字稿:问号与未定义类型联合

来自分类Dev

作法:打字稿实例栏位避免未定义

来自分类Dev

打字稿Angularjs未捕获ReferenceError:未定义应用

来自分类Dev

打字稿-未捕获的ReferenceError:未定义Toastr

来自分类Dev

this。$ el在编写打字稿插件时未定义

来自分类Dev

打字稿通用类型和未定义

来自分类Dev

打字稿错误:无法读取未定义的属性X

来自分类Dev

打字稿未捕获referenceError:未定义require

来自分类Dev

打字稿在对象上返回未定义

来自分类Dev

使用 .then() 的未定义返回打字稿函数

来自分类Dev

变量未定义的可观察打字稿

来自分类Dev

打字稿中的减法返回未定义

Related 相关文章

  1. 1

    无法读取未定义的属性“toUpperCase”(“

  2. 2

    从打字稿节点中的异步等待中获取未定义

  3. 3

    从打字稿节点中的异步等待中获取未定义

  4. 4

    不能要求从打字稿的NodeJS默认文件的导出函数

  5. 5

    未捕获的TypeError:无法读取未定义的属性“ toUpperCase”

  6. 6

    打字稿.length返回未定义

  7. 7

    打字稿导入的对象未定义

  8. 8

    打字稿中未定义的属性

  9. 9

    从打字稿文件生成npm模块

  10. 10

    打字稿模块:已定义未定义

  11. 11

    明确定义后,为什么会得到未定义的“ toUpperCase”?

  12. 12

    Uncaught TypeError:无法读取未定义反应状态项的属性“ toUpperCase”

  13. 13

    从打字稿中的数组中的字符串派生键以定义对象属性名称

  14. 14

    打字稿中未定义与未分配的变量

  15. 15

    意外的打字稿,这是未定义的类型

  16. 16

    未捕获的ReferenceError:define未定义打字稿

  17. 17

    调试会话期间打字稿未定义的常量

  18. 18

    打字稿:问号与未定义类型联合

  19. 19

    作法:打字稿实例栏位避免未定义

  20. 20

    打字稿Angularjs未捕获ReferenceError:未定义应用

  21. 21

    打字稿-未捕获的ReferenceError:未定义Toastr

  22. 22

    this。$ el在编写打字稿插件时未定义

  23. 23

    打字稿通用类型和未定义

  24. 24

    打字稿错误:无法读取未定义的属性X

  25. 25

    打字稿未捕获referenceError:未定义require

  26. 26

    打字稿在对象上返回未定义

  27. 27

    使用 .then() 的未定义返回打字稿函数

  28. 28

    变量未定义的可观察打字稿

  29. 29

    打字稿中的减法返回未定义

热门标签

归档