使用JavaScript在运行时设置函数名称

我是阿斯顿

是否可以在JavaScript中在运行时设置函数名称?

var ctor = function() {}; // Anonymous function because I don't know the name ahead of runtime.
ctor.name = 'foo'; // Pseudocode  - this is effectively what I want to do

我希望以上内容等同于:

var ctor = function foo() {};

编辑

这是一个用例示例:

function mix(fn1, fn2, name) {    
    var ctor = function() {};
    ctor.name = name; // Vain attempt to set the name of the function.
    ctor.prototype = Object.create(fn1.prototype);

    Object.keys(fn2.prototype).map(function(k) {
        ctor.prototype[k] = fn2.prototype[k];
    });

    // Return a constructor function with the prototype configured.
    return ctor;
}

function Foo() {}
Foo.prototype.foo = function(){};

function Bar(){}
Bar.prototype.bar = function() {};

var Foobar = mix(Foo, Bar, 'Foobar');
console.log(new Foobar()); // ctor {bar: function, foo: function} (in Chrome) - I wanted Foobar { bar: function, foo: function }
i

name 是仅某些浏览器支持的非标准。

现在,它已在ECMAScript 6中标准化:

19.2.4.2名称

name属性的值是一个描述函数的字符串。该名称没有语义意义,但通常是变量或属性名称,用于在ECMAScript代码的定义点引用该函数。此属性具有属性{[[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:true }。

没有与此规范相关联的上下文名称的匿名函数对象不具有name自己的属性,而是继承name%FunctionPrototype%属性。

因此,您的代码将在不支持的浏览器上工作name,但是new属性将是可写且可枚举的。在支持该功能的浏览器上,您的代码将无法使用,因为name它不可写。

因此,更好的等效代码将是

Object.defineProperty(ctor, 'name', {
    value: 'foo',
    configurable: true
});

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在运行时使用指定的参数名称创建函数?

来自分类Dev

如何在运行时获取过程或函数名称?

来自分类Dev

jenkinsfile参数名称在运行时解析

来自分类Dev

可以在运行时使用Javascript创建函数吗?

来自分类Dev

Javascript:在运行时创建函数

来自分类Dev

在运行时使用管道名称/ metadata调用管道

来自分类Dev

在运行时使用动态名称创建Qlabel

来自分类Dev

在运行时JavaScript中创建匿名函数

来自分类Dev

如何在运行时获取Java中的参数名称

来自分类Dev

在运行时设置设置

来自分类Dev

在运行时使用Gcc导入C ++成员函数

来自分类Dev

页面引发JavaScript运行时错误:“函数名称”未定义。仅限IE10

来自分类Dev

页面引发JavaScript运行时错误:“函数名称”未定义。仅限IE10

来自分类Dev

当函数名称不带括号发送给cout时,编译器如何确定在运行时输出什么值?C ++

来自分类Dev

在运行时设置UICollectionView框架

来自分类Dev

在运行时更改MPI设置

来自分类Dev

在运行时更改CoreNLP设置

来自分类Dev

使用Javascript在运行时生成节点/ div ID

来自分类Dev

在运行时快速创建函数

来自分类Dev

递归函数在运行时崩溃

来自分类Dev

在运行时禁用 Javascript 功能

来自分类Dev

如何在运行时设置Azure WebJob队列名称?

来自分类Dev

您可以在运行时在XmlRootAttribute中设置名称空间字段吗?

来自分类Dev

如何在运行时设置Azure WebJob队列名称?

来自分类Dev

在运行时修改模板化函数的名称-可能吗?

来自分类Dev

使用Devkit构建的强制连接器在运行时具有唯一的名称

来自分类Dev

如何在运行时使用名称变量创建多个DataGridView

来自分类Dev

嵌套函数仍在运行时暂停外部函数

来自分类Dev

在运行时更改组件的ID名称

Related 相关文章

  1. 1

    如何在运行时使用指定的参数名称创建函数?

  2. 2

    如何在运行时获取过程或函数名称?

  3. 3

    jenkinsfile参数名称在运行时解析

  4. 4

    可以在运行时使用Javascript创建函数吗?

  5. 5

    Javascript:在运行时创建函数

  6. 6

    在运行时使用管道名称/ metadata调用管道

  7. 7

    在运行时使用动态名称创建Qlabel

  8. 8

    在运行时JavaScript中创建匿名函数

  9. 9

    如何在运行时获取Java中的参数名称

  10. 10

    在运行时设置设置

  11. 11

    在运行时使用Gcc导入C ++成员函数

  12. 12

    页面引发JavaScript运行时错误:“函数名称”未定义。仅限IE10

  13. 13

    页面引发JavaScript运行时错误:“函数名称”未定义。仅限IE10

  14. 14

    当函数名称不带括号发送给cout时,编译器如何确定在运行时输出什么值?C ++

  15. 15

    在运行时设置UICollectionView框架

  16. 16

    在运行时更改MPI设置

  17. 17

    在运行时更改CoreNLP设置

  18. 18

    使用Javascript在运行时生成节点/ div ID

  19. 19

    在运行时快速创建函数

  20. 20

    递归函数在运行时崩溃

  21. 21

    在运行时禁用 Javascript 功能

  22. 22

    如何在运行时设置Azure WebJob队列名称?

  23. 23

    您可以在运行时在XmlRootAttribute中设置名称空间字段吗?

  24. 24

    如何在运行时设置Azure WebJob队列名称?

  25. 25

    在运行时修改模板化函数的名称-可能吗?

  26. 26

    使用Devkit构建的强制连接器在运行时具有唯一的名称

  27. 27

    如何在运行时使用名称变量创建多个DataGridView

  28. 28

    嵌套函数仍在运行时暂停外部函数

  29. 29

    在运行时更改组件的ID名称

热门标签

归档