0

私は次のプライベート/パブリックメソッドの構文を使用していますJavaScript

function Cars() {
    this.carModel = "";
    this.getCarModel = function () { return this.carModel; }
    this.alertModel = function () {alert (this.getCarModel());}
}

しかし、私がメソッドを呼び出しているとき、オブジェクトを指しているalertModelためにエラーが発生しているため、オブジェクトを見つけることができません 。-ウィンドウを指しているthiswindowalert (this.getCarModel());this

var newObject = new Cars();
newObject.alertModel();

これらのメソッドもで宣言してみましprototypeたが、動作は同じです。

Cars.prototype.getCarModel = function () {
    this.getCarModel = function () { return this.carModel; }
}
Cars.prototype.alertModel = function () {
alert (this.getCarModel());
}

私がやっていることは、これなしでそれを呼んでいlikeます:

  Cars.prototype.alertModel = function () {
    alert (newObject.getCarModel());
    }

それが唯一の方法ですか?他の方法ではその働きがあるからです。

4

3 に答える 3

0

問題は、スコープ内で基本的に浮動関数を宣言していることです。Javascriptのスコープとコンテキストの違いを理解する必要があります。興味深いことに、PragmaticCoffeescriptはこれについての良い議論を提供します。これはもう1つの優れたリソースです。

于 2013-02-24T09:40:54.743 に答える
0

これを試して:

function Cars() {
    var carModel = "";
    this.getCarModel = function() { return carModel; };
    this.alertCarModel = function() { alert (carModel) };
}

このように、carModelはプライベートになり、alertCarModelメソッドとgetCarModelメソッドによってのみパブリックにアクセスできなくなります。

于 2013-02-24T09:55:14.210 に答える
0

これを試して:

function Cars() {
    this.carModel = "";
    this.getCarModel = function () { return this.carModel; }
    this.alertModel = function () {alert (this.getCarModel());}

    return {
     getCarModel: getCarModel,
     alertModel: alertModel
    }
}

var newObject = new Cars();
newObject.alertModel();
于 2013-02-24T09:57:36.990 に答える