【发布时间】:2014-10-26 23:28:32
【问题描述】:
我遇到过following diagram,它看起来很乱。
所以我的问题来了:
为什么JavaScipt 有单独的Function 和Object 函数对象 (而不是例如简单地将所有内容都定义在顶层 由用户指向单个原型对象Root,并与原型 Root 指向 Root,这看起来要简单得多 和更直观的设计)?
谢谢。
对不起,我的误解。现在我意识到:
-
JavaScript 具有原始数据类型和对象。原始数据类型是 布尔值、数字、字符串、null 和未定义。当需要前三个 这些被视为布尔值、数字和字符串的实例。一切 else 是一个对象,包括函数、数组、正则表达式和 日期。函数可以用作构造函数或普通函数。 当函数用作构造函数时,它可以用于实例化 通过 new 运算符的对象实例。实例化的原型 实例(通过
__proto__属性访问)设置为构造函数的 实例化时的“原型”属性。__proto__成员用于通过原型继承链解析属性。由于函数比对象更专业,所以有一个 Function.prototype 对象卡在函数和对象之间的原型继承链中 顶级 Object.prototype 对象。函数和对象构造函数 函数本身通常不需要,因为我们可以使 直接使用函数关键字和对象字面量。
【问题讨论】:
-
因为 Function 实例不同于 Object 实例。它们是函数。
-
但我的理解是,在 JavaScript 中,一切都是对象和函数。看到这个帖子:markdalgleish.com/2012/10/…
-
@JohnSonderson 恐怕您的理解不正确。并非 JavaScript 中的所有内容都是对象,当然也不是所有内容都是函数。
-
@JohnSonderson:不。每个函数都是对象,但并非所有对象都是对象,也不是每个对象都是函数。
-
@JohnSonderson:你的理解是错误的。虽然一切都是对象,函数也是对象,但并非一切都是函数。
标签: javascript prototype prototypal-inheritance prototype-programming