问题标签 [prototypal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
33 浏览

javascript - 了解原型继承

当我检查原型是否等于Object.prototype

前两个返回true,第三个返回false

为什么会这样?

0 投票
1 回答
212 浏览

javascript - Angularjs 1.x 中的打字稿继承

我正在尝试使用其他服务可以继承 n Angularjs 的方法和属性来创建一个抽象类服务。使用 typescripts 扩展方法将不起作用,或者如果做得正确我不会,所以尝试使用这种模式,但遗憾的是它也不起作用。Typescript 不知道从原型继承中继承的方法。他们是否有任何解决方法或解决方案,谢谢您的帮助

抽象服务类的示例代码

对于子服务类

对于为 JshintRC 提出的解决方案,以抑制 Typescript 产生的警告 "validthis": true 和 "shadow": "false

0 投票
1 回答
32 浏览

javascript - Javascript - Object.create:我的理解正确吗?

我试图完全理解原型是如何工作的。

这是我对原型的定义:

所有对象(除了基本对象)都具有的内置属性,它指向并引用“proto{}”对象,该对象是另一个对象的副本,如果在原始对象中找不到该对象的属性和方法,则可以引用该对象的属性和方法。

那是对的吗?特别是我想知道“是另一个对象的副本”部分 - 这意味着 JS 引擎在内存空间中创建对象 B 的存储副本,对象 A 的原型属性指向该副本以供参考。

现在我的问题是Object.create

我的理解是,此方法使使用它的任何对象的原型(或对象本身?)继承(IOW,引用传入对象的副本)传入的另一个对象的属性和方法。

在上面的代码中,john对象被创建并且它的原型属性指向一个创建的对象,该对象具有对象的方法和属性Person?或者换句话说,Object.create复制Person对象并将其放入原型属性john指向的内存空间中。这是对正在发生的事情的正确理解吗?

如果是这样,是制作对象('person')的副本的原因,原型john指向,因为这允许修改属性和方法的值而不覆盖Person对象中的道具/方法与john继承相关的原型对象?

我试图打破这一点,以便我可以理解并尽量不要使这个概念过于复杂。

这是我画的一张图片,以进一步说明我目前的理解:

在此处输入图像描述