javascript - 函数是对象的实例,对象是函数的实例?

标签 javascript

 console.log(Function instanceof Object);//true
 console.log(Object instanceof Function);//true

此代码摘自文章:https://github.com/stevekwan/experiments/blob/master/javascript/object-vs-function.html

我想我明白什么是原型(prototype)继承以及 Js 对象模型是如何工作的,但是这个循环链接在两个基本的嗯......可能是构造函数(这是对象的函数......并且所有对象都是对象构造函数的实例...... ) 函数和对象让我大吃一惊。

在面向类的语言中,我可以想象有一些基本类 Object,我创建的每个类都自动继承自它。

对我来说有时间一致性 - 类 Object 首先出现,然后我写的所有其他东西都出现在第二个等等。我真的不明白两个构造函数如何神奇地同时出现并且是彼此的实例。

最佳答案

请注意,FunctionObject 都是引用函数的全局符号。所以这两个函数都是 ObjectFunction 的实例,因为它们继承自两个原型(prototype)。

如果你这样做就不会那么困惑:

var a = Function, b = Object;

console.log(a instanceof Object);
console.log(b instanceof Object);
console.log(a instanceof Function);
console.log(b instanceof Function);

这些函数与任何其他函数一样具有这些属性:

var c = function() {};

console.log(c instanceof Object);
console.log(c instanceof Function);

instanceof 运算符的左侧,重要的是所涉及对象的性质。

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

相关文章:

javascript - 这段js代码有什么错误

javascript - Vue.js - 从过滤后的 scopedSlots 动态创建槽

javascript - 选择没有 jQuery 的所有链接和表单

javascript - NgRx Store - 根据另一个状态对象的属性有条件地加载数据

javascript - d3.js 热图未正确显示数据

javascript - 我制作了一个 Discord.js 机器人,但是当我告诉它某人时,它会在 DM 中输入该人的 ID

javascript - "function $()"和 "$(function())"之间有什么不同?

javascript - React/Redux,使用 Redux Thunk 实现多个操作

javascript - 在 Highchart 图例中,想要在开始时带上复选框

javascript - 如何在 HTML CSS 网络应用程序中使用通用的页眉和页脚?