-2

私はJavascriptプログラミングは初めてではありませんが、それがプロトタイプオブジェクトであり、継承であることを理解できません。私はこの問題を解決しようとしているので、このことを理解するためにコードにどのような質問をする必要がありますか?

4

2 に答える 2

1

JavaScript での「クラスベース」のオブジェクト作成の使用:

var Wallet = function (pin, starting_balance, overdraft) {
    this.amount = starting_balance;
    this.pin = pin;
    this.overdraft = overdraft;
};


Wallet.prototype.addFunds = function (amount) {
    this.amound += amount;
};

Wallet.prototype.withdrawFunds = function (amount) {
    if (this.amount + this.overdraft >= amount) {
        this.amount -= amount;
        return new Wallet(this.pin, amount, this.overdraft);
    }
};

Wallet.prototype.displayBalance = function () {
    var cents = this.amount % 100,
        dollars = (this.amount - cents) / 100,
        total = dollars + "." + (cents > 9 ? cents : ("0" + cents));

    var output = "Current Balance: $" + total;
};



var myWallet = new Wallet(1234, 2000, 100000);
myWallet.displayBalance(); // "Current Balance: $20.00"

を返す関数でnew演算子を使用することにより、コンストラクター関数のを変更できます。constructorthisprototype

すなわち: 変更しWallet.prototypeます。

次に、すべてWalletの は同じ機能を持ちます。

もちろん、これはあまり安全な財布ではありません。世界中の誰もがやって来て、変わることができmyWallet.amountますmyWallet.pin

しかし、ウォレットをより安全にすると:

var Wallet = function (pin, amount, overdraft) {
    var balance = amount,
        keyCode = pin,
        padding = overdraft;
};

Wallet.prototype.depositFunds = function (amount) { balance += amount; }; // does NOT work

これはうまくいきません。プロトタイプは、コンストラクター関数によって返されたオブジェクトのパブリック プロパティにのみアクセスできます

つまり、コンストラクターを介してオブジェクトに追加されたもの、または事後に手動で何かを追加したときにObj.prototype.<whatever>のみアクセスできるということです。this.<whatever> = <x>;myObj.property = <x>;

于 2012-09-19T04:14:23.873 に答える
0

このブログ投稿、Understanding JavaScript Prototypesは、すべてを理解するのに本当に役立ちました。

オブジェクトのプロトタイプによって定義されたメソッドは、オブジェクトで直接呼び出すことができます。たとえば、「doSomething」というメソッドを持つプロトタイプが obj にある場合、 を呼び出すことができますobj.doSomething()

于 2012-09-19T04:11:28.070 に答える