如何解决如果函数是JS中的对象,我们可以在函数内部使用方法吗?如果是这样,怎么称呼他们?
在此示例中,greet()
函数是通过sample.greet()
调用的。
let sample = {
greet() {
console.log("hi")
}
}
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 举报,一经查实,本站将立刻删除。