Javascript - 每个函数都是一个对象?

标签 javascript function object

在 Javascript 中,每个函数都是一个对象。

function a() {
    this.x = function() { console.log("x"); }
}

这里的“a”是一个函数,它是一个对象。对吧?

var b = Object.create(a);
b.x(); //does not work!!

如果我们这样写,上面的代码就可以工作了——

var b = Object.create(new a())

那么这是否意味着只有函数的实例才是对象?不是函数?

最佳答案

它们不是您正在使用 new 关键字的函数实例,new 关键字可以做很多事情:

  • 创建了一个全新的对象
  • 新对象是[[prototype]]-linked
  • 新对象被设置为函数调用的“this”绑定(bind)
  • 除非函数返回它自己的对象,否则新调用的调用 函数将返回新对象

在您的第一个示例中,您从没有任何 x 属性的函数 a 创建了一个对象。

在最后你创建了新的 a() 调用返回的对象的对象,它有一个 x 属性,因为它是在 a 函数的执行中赋值的

关于Javascript - 每个函数都是一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31185577/

相关文章:

javascript - 播放/暂停/停止打字机中的音频

swift - 希望更好地理解 Swift 函数

java - 在采用 Object 参数的 Java 方法中,您如何访问仅存在于特定类实例的字段?

c++ Cycle随机切断?

javascript - 最佳实践导致臃肿的容器和非模块化代码

javascript - jQuery动态高度问题

php - 如何在阿拉伯语中使用类似文本的php代码

r - 如何比较R中的三角函数?

Javascript(子)对象通过键数组访问

php - JavaScript 和 PHP 的总值(value)