0

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

原型是 TheClass 中的对象吗?

TheClass.prototype.someProperty = "hello";

那么在上面的陈述中,是在原型对象内部创建属性吗?如果是这样,那么如果一个类是在原型对象中创建的,那么它如何访问该属性?

这些是访问属性的方法

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

不是这个

alert(obj.prototype.someProperty);

toString()也在原型对象内部,您通过调用 toString 所属的对象来调用toString( ),但是toString()属于原型对象,对吗?

怎么会通过调用对象而不是对象内部的原型来调用它。我熟悉 java 这称为COMPOSITION

那么为什么这个工作呢?我知道它的继承但不是COMPOSITION并且我们没有编写将原型的toString()方法委托给对象的语句。

alert(theClass);

不是

alert(prototype);
4

3 回答 3

2

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

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

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

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

是的。

原型是 TheClass 中的对象吗?

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

于 2012-05-14T23:14:53.253 回答
2

使用原型链查找 JS 中的属性

https://developer.mozilla.org/en/JavaScript/Guide/Inheritance_constructor_prototype

于 2012-05-14T23:15:05.003 回答
1

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

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

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

是的。

上述方法和属性不在构造函数中,这是否意味着它们不是每次创建对象时都创建的?

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

于 2012-05-14T23:15:21.987 回答