如果我有一个功能对象:
function Calculator()
{
// some code
}
然后我实例化:
var calc=new Calculator();
说我的计算是否正确
感谢您澄清这一点,干杯,
答案 0 :(得分:4)
每个变量都是Object
,因此具有Object
的方法和属性。但是,从技术上讲,JavaScript中没有真正的继承,因为它是一种原型语言而不是经典语言。但是,因为一切都是对象而且一切都是可变的,所以可以通过将一个对象的属性分配给另一个对象来模仿继承。请参阅jQuery的extend
方法或CoffeeScript的类扩展。
但是,要回答你的问题:
calc
是Calculator
的一个实例,意味着其原型为Calculator
。答案 1 :(得分:2)
嗯...我的理解是它是一个计算器对象,但继承并不是一个公平的术语。
它是 Calculator对象的实例,它又是对象的实例。但由于它们不是传统上想象的类,因此术语“继承”在技术上并不正确。
答案 2 :(得分:0)
JavaScript中的所有对象都从类型Object
“继承”。我把单词inherit放在引号中,因为它不是经典继承,而是原型继承,因为JavaScript是基于原型的语言。
阅读更多相关信息here(说真的,因为除非你了解原型,否则这不会有任何意义)。
现在,对您的问题的简单回答是new Calculator()
创建了Calculator
的实例,该实例继承自Object
。因此,数字1 little 更接近。数字2是错误的,因为计算器对象不会从自身继承。这是is-a
关系。
现在还有一件事:功能类型。实际上,我们在经典术语中的“继承”如下所示:
Calculator
< - Function
< - Object
(< - 站立对于inherits from
)
答案 3 :(得分:0)
在JavaScript中根本不知道inheritance
。你的Calculator
事物基本上是一个对象,它有一个名为prototype
的属性,它被用作Calculator
对象的所有实例的原型。
基本上calculator = new Calculator
将是Calculator
的实例,但在内部所有属性(直到您明确更改它们)将指向Calculator.prototype
。换句话说,一个新的calculator
与Calculator.prototype
几乎是同一个对象,但在JavaScript解释器中有一个不同的object-id。
所以,最后calculator
是Calculator
的实例,最终是Object
,但它不会从Calculator
“继承”,因为没有继承,有对象原型可以是任何实例。