当前位置: 首页 > 知识库问答 >
问题:

一个函数的属性到底意味着什么

宗政海
2023-03-14

对于下面的代码,我为一个对象< code>obj提供< code>isShiny,它被列为属性的一部分,本质上是一个键-值对,其中键是< code>isShiny,值是匿名函数。

但是,当我为函数函数 func 提供 isShiny 时,幕后到底发生了什么?当我打印出一个函数时,没有提示isShiny在哪里。

 var obj ={} //this is an object
    obj.isShiny = function () {
        console.log(this);
        return "you bet1";
    };
    console.log(obj); 

    var func = function () {console.log(this)}; //this is a function
    func.isShiny = function () {
        console.log(this);
        return "you bet1";
    };
    console.log(func);

这是来自浏览器的控制台.log的输出。

共有2个答案

左宁
2023-03-14

使用< code>console.dir而不是< code>console.log,它会记录函数对象及其方法和属性。

一个相关的问题:< code>console.dir和< code>console.log有什么区别?

司马作人
2023-03-14

当您记录该函数时,您没有得到任何< code>isShiny的踪迹的原因纯粹是由于浏览器对< code>console.log的实现,而与JavaScript的幕后发生的事情无关。< code>console.log认为该属性是一个函数,因此不会像“普通”对象一样将其注销。在这种情况下,< code>console.dir可能会更有用。有关< code>console.log与< code>console.dir有何不同的更多信息,请查看此问题及其答案。

正如您已经正确意识到的那样,在JavaScript中,函数本质上只不过是一个可调用的对象 - 您可以像任何非函数对象一样分配和访问属性。

 类似资料:
  • 问题内容: 我对gulp比较陌生,我想知道gulp任务到底是做什么的?我已经搜集到它通常在a 和after之后运行,但是它还必须更多。我一直无法在网上或gulp的文档中找到任何东西,我真的很想了解我在使用什么。 编辑我发现了这个,但是在解释它方面做得很差 问题答案: 从Node文档中: https://nodejs.org/api/stream.html#stream_visible_pipe_d

  • 问题内容: 我从一些文档中了解到,Hotspot VM使用称为Oop Maps的数据结构来管理VM中的所有OOP。我的问题是,此Oop Map数据结构何时生成?在编译时还是在运行时?对此,任何进一步的详细文件将受到欢迎。感谢你们。 问题答案: OopMap是一种结构,它记录对象引用(OOP)在Java堆栈上的位置。其主要目的是在Java堆栈中查找GC根目录,并在堆中移动对象时更新引用。 OopMa

  • 问题内容: 我刚刚看到一个成员函数,如下所示: 但是Cat是这样的接口: 因此,我对如何解释这一点感到困惑。我知道什么东西返回一个对象或原语是什么意思。但是返回接口意味着什么?如何使用此函数的返回值? 问题答案: 考虑一下这种方式:如果在常规类的哪里,当您想在其上调用某些方法时,您 究竟 在乎什么呢? 您会关心方法定义:它们的名称,它们的参数类型,它们的返回值。你 并不 需要关心实际的实现! 由于

  • 我想创建一个

  • 假设我们有以下内容: 现在,我知道我们需要选择最专业的类

  • 问题内容: 我正在使用Facebook库,其中包含以下代码: 函数定义开头的&是什么意思,以及如何使用这样的库(在一个简单的示例中) 问题答案: 函数名称前的与号表示函数将返回对变量的引用,而不是值。 当您想使用函数查找引用应绑定到哪个变量时,按引用返回很有用。不要使用引用返回来提高性能。引擎将自动自动优化它。仅在有充分的技术理由时才返回引用。