javascript - 什么是原型(prototype)组合或继承?

标签 javascript

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

原型(prototype)是 TheClass 中的对象吗?

TheClass.prototype.someProperty = "hello";

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

这些是如何访问该属性

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

不是这个

alert(obj.prototype.someProperty);

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

为什么它是通过调用对象而不是对象内部的原型(prototype)来调用的。 我熟悉java,这叫做COMPOSITION

那么为什么会这样呢?我知道它是否是继承,但不是组合,而且我们没有编写委托(delegate) toString() 方法的语句对象的原型(prototype)。

alert(theClass);

不是

alert(prototype);

最佳答案

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

Is the purpose of prototype to create methods and properties globally?

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

So that means all the instance can access it?

是的。

Is prototype an object inside TheClass?

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

关于javascript - 什么是原型(prototype)组合或继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10592213/

相关文章:

javascript - svg.js 代码无法在 JSFiddle.com 或我的笔记本电脑上运行

javascript - 将 CSS 转换属性更改为顶级属性的最佳方法?

javascript - 如何使用react调用外部定义的javascript函数?

javascript - 如何查看偏移左值?

javascript - 没有包装 div 的 ReactMarkdown

javascript - javascript 数组对象逻辑中的小问题

javascript - JS : window. setInterval 仍在后台运行?

javascript - 删除 DOM 元素后,jQuery UI datetimepicker 绑定(bind)到错误的输入

javascript - fullpage.js,具有较大的部分并禁用某些部分的滚动

javascript - 在 webpack 的上下文中导入模块实际上做了什么?