"プロトタイプ"ではなく "this"のプロパティとしてメソッド "area"を定義することとの違いは何ですか?このVs.プロトタイプ
」:
Prototypes and Inheritance
Chapter 9 , part 1
のセクションでJavaScript - The definitive guide
では、著者は、プロトタイプオブジェクトの内部でメソッド「エリア」を定義することは有益であるが、彼の説明は本当に理解できなかったことを述べています。 。すべての1つのRectangleの領域が のオブジェクトは常に同じ 関数を参照しています(誰かがそれを変更する可能性がありますが、 コースですが、通常はオブジェクトのメソッド を定数とします)。 同じクラスのすべてのオブジェクト (つまり、同じ のすべてのオブジェクトが同じ コンストラクタで作成されたオブジェクト)で共有されることを目的とした のメソッドに対しては、通常の プロパティを使用するのに非効率的です。//console.clear() function Rectangle(w, h) { this.width = w; this.height = h; this.area = function() { return this.width * this.height; } } var r = new Rectangle(2, 3); var a = r.area(); //console.log(a) function Square(s) { this.side= s; } Square.prototype.area = function(){return this.side * this.side; } var r = new Square(2); var a = r.area(); //console.log(a)
私はこの質問がほとんどthisのように見えることは知っていますが、そうではありません。
技術的に言えば、function(){...}は、何に割り当てられているかにかかわらず、常にクロージャを作成します。他のすべては素晴らしいよ! – ide
@ide:良い点。編集されました。 :) – cHao
@ide:説明のみんなありがとう!また、これについてもっと知ることができる場所を教えてください。 – instantsetsuna