2017-09-19 9 views
0
//classical JS does not provide a set data type--use JS object to build prime set: 
    var Set = function() { 
     Set.prototype.add = function(o) { 
     this[o] = true; 
     } 
    } 

    //Big-Time Important: 
    var s = new Set(); 
     s.add(2); 
     s.add(3); 
     s.add(5); 
     s.add(7); 
     s.add(11); 
     s.add(13); 
     s.add(17); 
     s.add(19); 
     s.add(23); 

このコードは、素数の数が増え、どちらが正しいかを推測する必要があります。しかし、コード:var Set = function()は別の関数に入ります。私は何が起こっているのか、それとも下に作成されたオブジェクトをどのように使っているのか分かりません。このコードはjavascriptでどのように動作するのか分かりません

+0

console.logにすべての値を追加した後にsの値を追加すると、それを把握できるはずです。あなたはそれを試しましたか? –

+0

'class'構文を使用すると、' class Set {add(o){this [o] = true; }} '。多分それが助けますか? – 4castle

答えて

0

これはオブジェクト指向のJavaスクリプトスタイルです。プロトタイプは、このケースではオブジェクトに変数やメソッドを追加するためのアクセス権を与えます。あなたは以下のように考えることができます。 Setはクラスで、新しいSet()でオブジェクトを作成できます。

function Set(){ 
this.add = function(o){ 
    this[o]= true; 
} 
} 
0

ES6以前はJavaScriptが組み込まれていませんでした。このコードでは、セットを作成しています。

var Set = function() { 
     Set.prototype.add = function(o) { 
     this[o] = true; 
     } 
    } 

上記のコードは、「クラス」を作成するjavascriptの方法です。

Set.prototype.add = function(o) { 
      this[o] = true; 
      } 

上記のコード行は、Setクラスに「add」というメソッドを追加するJavascriptの方法です。

this[o] = true; 

上記の行は、プロパティoを追加して値をtrueに設定しています。これはthis.o = trueと同じです