在JavaScript中,是否有一种方法可以使用"this"来打印多个对象属性?关键字或(for,
In JavaScript, is there a way to print multiple Objects properties using the "this" keyword or a (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)
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());
相关文章:
- 使用javascript将动态表从一个html页面打印到另一个html页
- JavaScript打印功能使日历停止工作
- esri javascript异步打印
- 铬:“;未捕获的语法错误:意外的标记:"
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- jQuery/JavaScript在线公文包表单-打印样式表
- 如何打印嵌套对象的所有值
- 使用“+="操作人员
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 是否有任何方法可以去除“"打印时从阵列中删除
- 使用ajax打印“;你好,世界"当你点击一个按钮时
- Backbone.js打印“;函数String(){〔本机代码〕}"而不是模型属性
- 我如何以编程方式调用;打印预览"屏幕使用Javascript或Jquery
- 为什么"打印“;不会'不能在node.js中工作
- 如何打印“"如果变量的值为null