我的Javascript对象继承自什么

What my Javascript object inherits from?

本文关键字:什么 继承 对象 Javascript 我的      更新时间:2024-04-19

如果我有一个函数对象:

function Calculator()
{
// some code
}

然后我实例化:

var calc=new Calculator();

说我的计算:正确吗

  1. 是Calculator对象(并继承自object对象)吗
  2. 从Calculator对象继承(这反过来又从object对象继承)

感谢您澄清这一点,干杯,

每个变量都是Object,因此具有Object的方法和属性。然而,从技术上讲,JavaScript并没有真正的继承,因为它是一种原型语言,而不是经典语言。但是,因为一切都是一个对象,而且一切都是可变的,所以可以通过将一个对象的属性分配给另一个对象来模拟继承。请参阅jQuery的extend方法或CoffeeScript的类扩展。

但是,为了回答您的问题:

  1. 是的,calcCalculator的一个实例,这意味着它的原型是Calculator
  2. 否,见上文

嗯。。。我的理解是,它一个Calculator对象,但继承并不是一个公平的术语。

它是Calculator对象的实例,而Calculator又是对象的实例。但由于它们不像传统上想象的那样是类,"继承"一词在技术上是不正确的。

在JavaScript中没有inheritance的概念。Calculator基本上是一个对象,它有一个名为prototype的属性,它被用作Calculator对象的所有实例的原型。

基本上,calculator = new Calculator将是Calculator的一个实例,但在内部,它的所有属性(直到您显式地更改它们)都将指向Calculator.prototype。换句话说,新的calculatorCalculator.prototype几乎是相同的对象,但在JavaScript解释器中具有不同的对象id。

因此,最终calculatorCalculator的实例,最终是Object的实例,但它不是从Calculator"继承"的,因为没有继承,有对象原型可以是任何东西的实例。

JavaScript中的所有对象"inherit";从类型CCD_ 20。我把inherit这个词放在引号里,因为它不是经典继承,而是原型继承,因为JavaScript是一种基于原型的语言。

在这里阅读更多关于它的信息(说真的,因为除非你了解原型,否则这不会完全有意义)。

现在,您的问题的简单答案是new Calculator()创建了一个继承自ObjectCalculator实例。所以数字1是。数字2是错误的,因为计算器对象不是从自身继承的。这是一种is-a关系。

现在实际上还有一部分:函数类型。事实上,我们的";"继承";在中,经典术语看起来是这样的:

Calculator&lt-Function&lt-Object<-代表inherits from