微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果函数是JS中的对象,我们可以在函数内部使用方法吗?如果是这样,怎么称呼他们?

如何解决如果函数是JS中的对象,我们可以在函数内部使用方法吗?如果是这样,怎么称呼他们?

在此示例中,greet()函数是通过sample.greet()调用的。

let sample = {
    greet() {
        console.log("hi")
    }
}

如果这样定义,如何调用内部greet()函数

function sample() {
    function greet() {
        console.log("hi")
    }
}

解决方法

在函数体中声明的函数,例如您的示例中的greet()函数:

function sample() {
    function greet() {
        console.log("hi")
    }
}

在函数体内是私有的,不能从sample()函数范围之外调用。您只能从greet()函数体内调用sample(),除非您在运行greet之后以某种方式分配或返回sample(),所以您有意将greet分配给了一些外部变量(在您的示例中不存在)。


函数是对象,因此您可以在这些对象上创建属性,然后可以将函数分配给属性,然后可以对其进行调用:

function sample() {
    console.log("running sample()");
}

sample.greet = function () {
    console.log("hi")
}

sample.greet();

,

您可以通过在封闭函数中调用嵌套函数来调用它。这是因为嵌套函数的范围仅限于封闭函数,并且没有其他方法可以从外部调用它。

function sample() {
    function greet() {
        console.log("hi");
    }
    greet();
}

sample()
,

您可以为对象分配属性的方式与为对象分配属性的方式相同。您可以将另一个函数分配为这些属性之一,使其像方法一样。

function foo(){
    console.log("foo called");
}

foo.bar = function() {
    console.log("foo.bar called");
}

foo(); // "foo called"
foo.bar(); // "foo.bar called"

您还可以将任何值分配给函数的属性。

foo.x = 1;
console.log(foo.x); // 1

是的,函数是对象,可以将它们像对象一样对待。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。