什么是原型组成或继承?

时间:2012-05-14 23:10:43

标签: javascript

原型的目的是全局创建方法和属性吗? 这意味着所有实例都可以访问它? 所述方法和属性不在构造函数中,这是否意味着每次创建对象时都不会创建它们?

原型是TheClass中的一个对象吗?

TheClass.prototype.someProperty = "hello";

所以在上面的语句中,是在原型对象中创建属性吗? 如果是这样,那么如果在原型对象中创建属性,那么类如何访问该属性?

这些是如何访问该属性

var obj = new TheClass();
alert(obj.someProperty);

不是

alert(obj.prototype.someProperty);

toString()也在原型对象中 你通过调用toString所属的对象来调用 toString(),但 toString()属于原型对象吗?

如何通过调用对象而不是对象内的原型来调用它。 我熟悉java,这叫做 COMPOSITION

为什么这个工作呢?我理解它的 INHERITANCE 但不是 COMPOSITION 而且我们没有写一个声明委托 toString()方法原型到对象。

alert(theClass);

alert(prototype);

3 个答案:

答案 0 :(得分:2)

从特定类继承的类可以访问该类原型上的方法。这使得prototype成为一个基于继承的构造。

  

原型的目的是全局创建方法和属性吗?

是。 Prototype允许您提供可以从该类继承的类方法和属性的实例。

  

那么这意味着所有实例都可以访问它吗?

是的。

  

原型是TheClass中的对象吗?

没有。 Prototype是一组属性,继承自TheClass的类也被授予访问权限。如果在特定对象上找不到属性,它将在原型链中搜索该属性。

答案 1 :(得分:2)

答案 2 :(得分:1)

  

原型的目的是全局创建方法和属性吗?

是的,您将属性和方法添加到原型中,以便该函数的所有实例都可以访问相同的方法和属性。对函数原型中的方法/属性的任何更改都会影响该函数的所有实例

  

那么这意味着所有实例都可以访问它吗?

  

所述方法和属性不在构造函数内部,是   这意味着每次创建对象时都不会创建它们吗?

是的,它们不会在每次初始化时重新创建 - 这是主要目的之一。