2016-09-21 8 views
1
var object1= new Object(); 

object1.name= 'Dana'; 
object1.age = 18; 

var object2= new Object(); 

object2.name= 'Togo'; 
object2.age= 21; 

var object3= new Object(); 

object3.name= 'Chris'; 
object3.age= 29; 


object3.rank = function() {  
    console.log(this.name + ' is ' + this.age + ' years of age. '); 

}; 

object3.rank(); 

だけのような...JavaScriptでは、 "this"キーワードまたは(for、in)LOOPを使用して複数のオブジェクトプロパティを印刷する方法はありますか?

rank(object1); 

を行うと、それは代わりにすべてのための一つの方法と同じように、各オブジェクト ための方法を入力するので

Dana is 18 years of age. 

を出力する方法があります類似したオブジェクト。私はまだfor(var key in obj)ループでは快適ではありませんが、どちらかといえば教えてください。どうもありがとうございます。それは有り難いです。論理に大きなギャップがある場合は、それを私に説明してください。

+0

あなたはプロトタイプで機能させることができhttps://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype – Michelangelo

+0

OKおかげで、それを感謝! – KBdoesCode

答えて

2

実際にあります。オブジェクト指向のJavascriptは、あなたがここで何をしたいかに対する答えです。

var Person = function (firstName) { 
    this.firstName = firstName; 
}; 

Person.prototype.sayHello = function() { 
    console.log("Hello, I'm " + this.firstName); 
}; 

var person1 = new Person("Alice"); 
var person2 = new Person("Bob"); 

// call the Person sayHello method. 
person1.sayHello(); // logs "Hello, I'm Alice" 
person2.sayHello(); // logs "Hello, I'm Bob" 

したがってのsayHelloがここで一度だけ定義されている方法 - が、各インスタンス化されたオブジェクト間で使用することができます。

は、ここであなたが言及したものと同様の例です!

優れたリファレンスガイドは、https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScriptにあり、次の手順をお手伝いしています。これを使用する際に問題がある場合は、お気軽にお問い合わせください。

希望すると便利です。

+0

すごい早くて速かった。ありがとう! – KBdoesCode

0

当然。すべての人を配列に入れ、その配列を繰り返します。簡単peasy:

function rank(input) { 
    console.log(inputname + ' is ' + inputage + ' years of age. '); 
} 

var object1 = ...; 
var object2 = ...; 
var object3 = ...; 

var objects = [object1, object2, object3, ...]; 

// now call rank() with every entry in the array: 
objects.forEach(rank); 

しかし、より良いアプローチは、それはあなたが関数を呼び出すことができているオブジェクトのインスタンスを作成することができますので、むしろ単なるオブジェクトよりも、プロトタイプを持つオブジェクトを使用するために、次のようになります。

var Person = function(name, age) { 
    this.name = name; 
    this.age = age; 
}; 

Person.prototype = { 
    rank: function() { 
    return this.name + ' is ' + this.age + ' years of age. '; 
    } 
} 

var people = [ 
    new Person('a', 1), 
    new Person('b', 2), 
    new Person('c', 3) 
]; 

people.forEach(function(person) { 
    console.log(person.rank()); 
}); 

または、より良い、近代的なJavaScriptのクラスと構文を使用して:あなたは、パラメータとしてオブジェクトを渡して試してみて、そのように名前と年齢をお読みください

class Person { 
    constructor(name, age) { 
    this.name = name; 
    this.age = age; 
    }, 

    rank() { 
    return `${this.name} is ${this.age} years of age.`; 
    } 
}; 

let people = [ 
    new Person('a', 1), 
    new Person('b', 2), 
    new Person('c', 3) 
]; 

people.forEach(person => console.log(person.rank()); 
+0

私はこれを完全に見なければなりません。ありがとう! – KBdoesCode

0

を。

などなどは、次のとおりです。

var object1= new Object(); 

object1.name= 'Dana'; 
object1.age = 18; 

var object2= new Object(); 

object2.name= 'Togo'; 
object2.age= 21; 

var object3= new Object(); 

object3.name= 'Chris'; 
object3.age= 29; 


function rank(obj) {  
console.log(obj.name + ' is ' + obj.age + ' years of age. '); 

}; 

rank(object1); 

これは、あなたの質問に応じて何をしたいだろうこれは、「主な目的」ではなくオブジェクト3上の機能を配置します:

がありますちょうど好きになる方法...

ランク(オブジェクト1);

と表示されます。

ダナは18歳です。

+0

これはとても簡単で正確に私が感謝のために探していたものです! – KBdoesCode

+0

だけでなく、少し保守性の高いオブジェクト指向のやり方を見ています。オブジェクトリテラルではなく、オブジェクトを使用する方法を学ぶ価値があります。 –

+0

@ user5464495あなたの質問があなたの望むように答えられたと思うなら、あなたは投票の矢印の下のチェックマークを押すことでこの投稿を「閉じる」ことができます。 – AgentM

関連する問題