gpt4 book ai didi

javascript - JS : nested function v prototype

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

我在 Javascript 中有一个对象,我想使用一个函数来处理传递给构造函数的数据,该函数稍后可以用更多数据从外部调用。当然,我不想重复代码(一次在构造函数中,一次在函数中),那么我应该如何最好地设置它?

我可以使用嵌套函数,但有人告诉我这是低效的:

function MyOb(data) {
this.myData = {};
function addData(newData) {
//Add newData to myData
}
addData(data);
}

但是如果我使用原型(prototype),我会在第 3 行收到“找不到变量 addData”错误:

function MyOb(data) {
this.myData = {};
addData(data);
}

MyOb.prototype.addData = function(newData) {
//Add newData to myData
}

那么我是否被迫使用嵌套函数或重复自己,或者有没有办法使用原型(prototype)来完成这项工作?

最佳答案

改变

function MyOb(data) {
var myData;
addData(data);
}

function MyOb(data) {
this.myData = {}; // or another initialization
this.addData(data);
}

您需要在 JavaScript 对象中显式 this

另请注意,使用 var myData 会使它成为私有(private)的:您将无法从构造函数外部定义的函数中使用此变量,包括 addData 函数。这就是为什么您可能需要 this.myData 的原因。

关于javascript - JS : nested function v prototype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17147472/

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