什么是原型组成或继承

What is Prototype COMPOSITION or INHERITANCE?

本文关键字:继承 原型 什么      更新时间:2023-09-26

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

原型是TheClass中的对象吗?

TheClass.prototype.someProperty = "hello";

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

这些是访问属性的方法

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

不是这个

alert(obj.prototype.someProperty);

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

为什么通过调用对象

而不是对象内部的原型来调用它。我熟悉Java,这被称为COMPOSITION。

那么为什么要这样做呢?我理解它的继承,但不,它是组合,我们没有写一个语句将原型的 toString(( 方法委托给对象。

alert(theClass);

alert(prototype);

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

原型的目的是在全球范围内创建方法和属性吗?

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

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

是的。

原型是TheClass中的对象吗?

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

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

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

原型的目的是在全球范围内创建方法和属性吗?

是的,将属性和方法

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

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

是的。

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

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