在JavaScript中,是否有一种方法可以使用"this"来打印多个对象属性?关键字或(for,

In JavaScript, is there a way to print multiple Objects properties using the "this" keyword or a (for, in) LOOP?

本文关键字:quot 打印 this 属性 for 关键字 对象 是否 JavaScript 可以使 方法      更新时间:2023-09-26
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();

有没有一种方法可以做到…

rank(object1); 

然后打印出

Dana is 18 years of age.

而不必为每个对象键入一个方法就像对所有看起来相似的对象使用一个方法。我对for(var key in obj) LOOP还不太熟悉,但请告诉我是否有可能。非常感谢。我很感激。如果我的逻辑有很大的差距,请给我解释一下

确实有。面向对象的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上找到,以帮助您完成接下来的步骤。如果您在使用时有任何困难,请随时询问。

希望这对你有帮助!

ES6现在被广泛使用,并且有这个更易于维护的类定义过程:

class Person {
   constructor(name) {
    this.name = name;
   }
   sayHello() {
    console.log("Hello, I'm", name);
   }
}

就是这样!现在您可以使用以下方式调用:

let person1 = new Person("Alice");
person1.sayHello();

您应该尝试将对象作为参数传递,并以这种方式读取名称和年龄。

如下所示:

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);

这将把函数放在'main object'而不是object3中,这将是你想要的根据你的问题:

有没有一种方法可以做到…

等级(中的object1);

然后打印出

Dana 18岁。

自然。把你所有的人放在一个数组中,然后遍历这个数组。容易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());