javascript - 在 JavaScript 中,有没有办法使用 "this"关键字或 (for, in) LOOP 来打印多个对象属性?

标签 javascript object methods this for-in-loop

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) 循环不太满意,但请让我知道这两种方式是否可行。太感谢了。我很感激。如果我的逻辑有很大的差距,请给我解释一下。

最佳答案

确实有。面向对象的 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();

关于javascript - 在 JavaScript 中,有没有办法使用 "this"关键字或 (for, in) LOOP 来打印多个对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39621840/

相关文章:

java - Java中的 vector ,如何在一个对象中返回多个 vector

c# - 将消息从类后面的代码返回到 Jquery

javascript - 如何获得释放按键的正确时间(JS 的 keyup 不准确)?

javascript - Parse React - 观察由 Parse.User.current() 创建的对象

javascript - 获取导致 React 闪烁的输入值

Python,Django,如何使用getattr(或其他方法)调用具有多个属性的对象?

javascript - 如何通过 jquery mobile 从一个页面移动到另一个页面(不是通过 href)

java - 使用 for 每个循环来打印对象

ios - 每次显示 View 时运行方法 - iOS

java - 添加与其他构造函数类似的构造函数意味着什么?