JavaScript解码中超级混乱的__proto__与原型


永远记住这一点。
.protoype 只能用于函数。时期。

假设我们有一个名为myInfo的构造函数

function Info(name,age) {
this.name = name;
this.age = age;
}

我们正在用名为 geo 的构造函数创建一个新对象。

let geo = new Info('Geo',26);

现在,如果我们控制台记录此日志,我们将获得我们的对象地理位置

JavaScript解码中超级混乱的__proto__与原型

您可以看到我们可以访问名称和年龄属性。

我们可以使用proto 查看对象地理的原型

JavaScript解码中超级混乱的__proto__与原型

现在尝试在控制台中键入geo.prototype

JavaScript解码中超级混乱的__proto__与原型

您不会找到名为原型的选项。

现在我只想重申一个事实,即我们只能在函数上使用原型。
由于我们使用的是构造函数,让我们使用它。

如果我们输入我们将得到以下内容Info.prototype

JavaScript解码中超级混乱的__proto__与原型

这与geo.__proto__

卡兹不是吗?
我们甚至可以检查它们是否相同

JavaScript解码中超级混乱的__proto__与原型

但是,如果我们想向我们的地理对象添加一个函数(技术上是一种方法)怎么办?

我们可以很容易地做到这一点

geo.__proto__.hi = function() {console.log('hi')};

JavaScript解码中超级混乱的__proto__与原型

当我们有很多这样的对象时,问题就来了

假设我们有

let john = new Info('John',20);
let sheila = new Info('Sheila',24);
let gary = new Info('Gary',27);
let kate = new Info('Kate',25);

我们必须将 hi 函数附加到我们上面创建的每个新对象。

相反,为什么不只使用构造函数的原型。

只是一个旁注…当我们想到 .prototype 时,我们可能会倾向于认为它显示了原型,是的,它确实如此,但从逻辑上讲,它实际上就像function.customPrototypeIAmMaking

因此,让我们为信息创建一个sayHello函数

Info.prototype.sayHello = function () {console.log(`Hello I am ${this.name}`)};

无论您使用构造函数 info 创建哪个对象,您始终可以访问 sayHello。

JavaScript解码中超级混乱的__proto__与原型

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/292949.html

(0)
上一篇 2022年11月11日
下一篇 2022年11月11日

相关推荐

发表回复

登录后才能评论