我的Javascript对象继承自什么
What my Javascript object inherits from?
如果我有一个函数对象:
function Calculator()
{
// some code
}
然后我实例化:
var calc=new Calculator();
说我的计算:正确吗
- 是Calculator对象(并继承自object对象)吗
- 从Calculator对象继承(这反过来又从object对象继承)
感谢您澄清这一点,干杯,
每个变量都是Object
,因此具有Object
的方法和属性。然而,从技术上讲,JavaScript并没有真正的继承,因为它是一种原型语言,而不是经典语言。但是,因为一切都是一个对象,而且一切都是可变的,所以可以通过将一个对象的属性分配给另一个对象来模拟继承。请参阅jQuery的extend
方法或CoffeeScript的类扩展。
但是,为了回答您的问题:
- 是的,
calc
是Calculator
的一个实例,这意味着它的原型是Calculator
- 否,见上文
嗯。。。我的理解是,它是一个Calculator对象,但继承并不是一个公平的术语。
它是Calculator对象的实例,而Calculator又是对象的实例。但由于它们不像传统上想象的那样是类,"继承"一词在技术上是不正确的。
在JavaScript中没有inheritance
的概念。Calculator
基本上是一个对象,它有一个名为prototype
的属性,它被用作Calculator
对象的所有实例的原型。
基本上,calculator = new Calculator
将是Calculator
的一个实例,但在内部,它的所有属性(直到您显式地更改它们)都将指向Calculator.prototype
。换句话说,新的calculator
与Calculator.prototype
几乎是相同的对象,但在JavaScript解释器中具有不同的对象id。
因此,最终calculator
是Calculator
的实例,最终是Object
的实例,但它不是从Calculator
"继承"的,因为没有继承,有对象原型可以是任何东西的实例。
JavaScript中的所有对象"inherit";从类型CCD_ 20。我把inherit这个词放在引号里,因为它不是经典继承,而是原型继承,因为JavaScript是一种基于原型的语言。
在这里阅读更多关于它的信息(说真的,因为除非你了解原型,否则这不会完全有意义)。
现在,您的问题的简单答案是new Calculator()
创建了一个继承自Object
的Calculator
实例。所以数字1是小。数字2是错误的,因为计算器对象不是从自身继承的。这是一种is-a
关系。
现在实际上还有一部分:函数类型。事实上,我们的";"继承";在中,经典术语看起来是这样的:
Calculator
<-Function
<-Object
(<-代表inherits from
)
- JavaScript-出于什么原因…继承
- 什么'这两种继承策略之间的区别是什么
- javascript继承中正确的原型做作是什么
- 我的Javascript对象继承自什么
- 它继承的字符串原型是什么
- Javascript中的继承,我在这里做错了什么
- 类的继承和扩展有什么区别
- 什么是原型组成或继承
- JavaScript中的差异继承是什么
- 使用原型继承的javascript代码中的对象生存期是什么
- 什么时候应该使用继承作用域,什么时候不应该
- Object.create(BaseObject)和util的区别是什么?继承(MyObject BaseObject)
- 继承方法(原型)和静态方法(表达式)的区别是什么?
- 在使用继承时,构造函数和原型对象有什么区别吗?
- 这两种类型的继承有什么区别?
- “这”是什么?参考JavaScript中的寄生继承
- 在javascript中继承了DOM元素对象!这段代码有什么问题?
- AppendChild不工作!,从DOM元素对象继承.我做错了什么?
- Array.Call(o)对原型继承做了什么?
- 在AngularJS中,继承和扩展的区别是什么?