如果我有一个函数对象:
function Calculator()
{
// some code
}然后我实例化了:
var calc=new Calculator();这么说对吗?我的履历:
谢谢你澄清,干杯,
发布于 2013-12-05 23:49:43
每个变量都是Object,因此具有Object的方法和属性。但是,从技术上讲,JavaScript中没有真正的继承,因为它是一种原型语言,而不是经典语言。但是,因为所有东西都是一个对象,而且一切都是可变的,所以您可以通过将一个对象的属性分配给另一个对象来模拟继承。请参阅jQuery的extend方法或CoffeeScript的类扩展。
但是,要回答你的问题:
calc是Calculator的一个实例,意味着它的原型是Calculator。发布于 2013-12-05 23:48:02
嗯..。我的理解是,它是一个Calculator对象,但是继承并不是一个公平的术语。
它是Calculator对象的一个实例,它反过来又是一个对象的实例。但是,由于它们不是传统上人们所想象的类,所以“继承”一词在技术上是不正确的。
发布于 2013-12-06 00:00:30
JavaScript中的所有对象都从Object类型“继承”。我将“继承”这个词放在引号中,因为它不是古典继承,而是原型继承,因为JavaScript是一种基于原型的语言。
请阅读更多关于它的这里 (认真地说,除非您了解原型,否则这是不完全有意义的)。
现在,对您的问题的简单回答是,new Calculator()创建Calculator的一个实例,该实例继承自Object。所以第一更接近。数字2是错误的,因为计算器对象不从自身继承。这是一段is-a关系。
现在,实际上还有一个部分:函数类型。实际上,我们的“继承”在古典术语中如下所示:
Calculator <- Function <- Object (<-表示inherits from)
https://stackoverflow.com/questions/20413185
复制相似问题