JS:嵌套函数v原型

Mat*_*ins 2 javascript prototype

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

我可以使用嵌套函数,但我被告知这是低效的:

function MyOb(data) {
    this.myData = {};
    function addData(newData) {
        //Add newData to myData
    }
    addData(data);
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用原型,我会在第3行找到"找不到变量addData"错误:

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

MyOb.prototype.addData = function(newData) {
        //Add newData to myData
}
Run Code Online (Sandbox Code Playgroud)

所以我被迫使用嵌套函数或重复自己,还是有办法使用原型进行这项工作?

Den*_*ret 5

更改

function MyOb(data) {
    var myData;
    addData(data);
}
Run Code Online (Sandbox Code Playgroud)

function MyOb(data) {
    this.myData = {}; // or another initialization
    this.addData(data);
}
Run Code Online (Sandbox Code Playgroud)

您需要thisJavaScript对象中的显式.

另请注意,using var myData使其成为私有的:您将无法在构造函数外部定义的函数中使用此变量,包括addData函数.这就是你可能需要的原因this.myData.