2017-01-19 3 views
-2

これがなぜ必要なのか正確にはわかりません。私が "name"のパラメータを取っているのであれば、まず "this.name"と等しく設定せずに "name"として参照できないのはなぜですか?"this.name = name;"を設定する目的は何ですか? JavaScriptで?

私の無知を許して、私は新しいです。

function Animal(name, numLegs) { 
    this.name = name; 
    this.numLegs = numLegs; 
} 

Animal.prototype.sayName = function() { 
    console.log("Hi my name is " + this.name); 
}; 
+0

これはjavascriptではなく、OOPのことです。オブジェクトのプロパティを他のプロパティから分離したままにしたい – mk2

+2

'name'は' Animal'へのローカル関数の引数です。その機能の外のどこにでもアクセスすることはできません。 'sayName'がその値にアクセスできるようにするには、両方の関数の間で共有されているどこかに格納する必要があります→' this'。 – deceze

+0

@decezeああ意味する。私は本当に「これ」が何であったかを理解していませんでした。ありがとう。 – MikeyH

答えて

0

this.namename変数関数(この場合はコンストラクタ)の範囲内にあるパラメータでありながら、インスタンス変数を表します。

この割り当てでは、ローカル変数の値がインスタンス変数に割り当てられます。

0

これはjavascriptではなく、OOPのことです。他のスコープから分離されたオブジェクトのプロパティを残したいとします。

var Animal = function(name) { 
    this.name = name; 
}; 
var name = "foo"; 
var dog = new Animal("bar"); 
// shows "foo" 
console.log(name); 
// shows "bar" 
console.log(dog.name); 
0

代名詞の「he」の使用として、「Johnは電車に乗ろうとしているので早く走っています」このように「John」を再利用しません。同様の優雅なやり方で、JavaScriptではthisキーワードをショートカットとして使用します。それはオブジェクトを指します。すなわち、文脈における主題、または実行コードの主題である。この例を考えてみましょう:

function Animals(pet1, pet2) { 
    var pets = "first pet " + pet1 + " second pet " + pet2; 
    console.log(pets); 
} 
Animals("Tiger", "Lion"); 

ので、この「として、あなたのパラメータに参照:

var person = { 
    firstName: "Penelope", 
    lastName: "Barrymore", 
    fullName: function() 
     ​// Notice we use "this" just as we used "he" in the example sentence earlier?:​ 
     console.log(this.firstName + " " + this.lastName); 
    ​ // We could have also written this: 
     console.log(person.firstName + " " + person.lastName); 
    } 
} 
0

はまあ...あなたは例では、2つのパラメータを持つ機能だけではなく、オブジェクトコンストラクタとプロトタイプで作業しています。私が何を意味するのか知っているなら、名前はsayName()のプロトタイプです。 FOR MORE.

関連する問題