编程语言
首页 > 编程语言> > JavaScript解码中超级混乱的__proto__与原型

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

作者:互联网

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

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

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

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

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

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

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

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

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

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

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

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

这与geo.__proto__

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

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

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

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

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

假设我们有

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,状态,服务器,创造,函数,承诺,方法,语法
来源: