gpt4 book ai didi

javascript - 为什么我们要使用构造函数的原型(prototype)属性来添加方法?

转载 作者:行者123 更新时间:2023-12-03 07:17:45 25 4
gpt4 key购买 nike

我对原型(prototype)和构造函数不了解的一件事..

假设我有这个构造函数,它将创建一个具有“name”属性和“logName”方法的对象

function MyExample(param1){
this.name = param1;
};

MyExample.prototype.logName = function(){
console.log(this.name);
}

我知道我刚刚在构造函数的(myExample)原型(prototype)中添加了一个方法(logName)。所以当我使用这个构造函数创建一个新对象(我)时,该对象将继承'name'属性和'logName'方法. logName 方法将成为新对象(我) 的一部分原型(prototype) 属性(property)
var me = new MyExample('bob');
me.logName(); //bob

..但是为什么不将 logName 方法添加到构造函数正在创建的对象中呢? (不是构造函数的原型(prototype))那不会提供相同的结果吗?即使 'logName' 不会成为新对象的 的一部分原型(prototype) 属性(property)。
function MyExample(param1){
this.name = param1;
this.logName = function(){
console.log(this.name)
};
};

var me = new MyExample('bob');
me.logName(); //bob

最佳答案

在第二个示例中,您重新创建 logName每次创建 MyExample 的新实例时都会运行.如果您使用 MyExample的原型(prototype)然后一个logName方法在 MyExample 的所有实例之间共享对象和上下文是自动传递的。

原型(prototype)还允许您在以后添加一个新方法,该方法可由该类型的现有对象访问,或全局修改该类型的所有对象的方法。

如果您想了解更多信息,此问题涉及同一主题,Advantages of using prototype, vs defining methods straight in the constructor?

关于javascript - 为什么我们要使用构造函数的原型(prototype)属性来添加方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40980508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com