我正在学习JavaScript并编写一个简单的演示,但失败了。你能帮我解释为什么getName
不是一个功能吗?感谢。
var newPerson = function(name) {
this.name = name;
getName: return function() {
return this.name;
}
};
var personOne = newPerson("Diego");
var personTwo = newPerson("Gangelo");
console.log(personOne.getName()); // prints Diego
console.log(personTwo.getName()); // prints Gangelo

答案 0 :(得分:3)
看起来你正试图用一些暴露的方法返回一个对象。在那种情况下,这就是我要做的。
var newPerson = function (name) {
this.name = name;
var self = this;
return {
getName: function () {
return self.name
}
}
}
var personOne = new newPerson("Diego");
var personTwo = new newPerson("Gangelo");
console.log(personOne.getName()); // prints Diego
console.log(personTwo.getName()); // prints Gangelo

编辑:感谢Pootie
或者你也可以这样做。
var newPerson = function (name) {
this.name = name;
this.getName = function () {
return this.name;
}
}
var personOne = new newPerson("Diego");
var personTwo = new newPerson("Gangelo");
console.log(personOne.getName()); // prints Diego
console.log(personTwo.getName()); // prints Gangelo

下次使用console.log()而不是document.write(),因为它更容易调试。
答案 1 :(得分:1)
我会这样做的
var Person = function(name) {
this.name = name;
this.getName = function() {
return this.name;
}
};
var personOne = new Person("Diego");
var personTwo = new Person("Gangelo");
document.write(personOne.getName()); // prints Diego
document.write(personTwo.getName()); // prints Gangelo
答案 2 :(得分:0)
好吧,如果我们introducing Object-Oriented Programming,我不妨向您展示JavaScript如何做到最好:
// The ECMAScript 5 way
function Person(name) {
this.name = name;
}
Person.prototype.getName = function getName() {
return this.name;
};
var personOne = new Person("Diego");
var personTwo = new Person("Gangelo");
console.log(personOne.getName());
console.log(personTwo.getName());

下一个使用ES6 Classes,是新JavaScript标准的一部分。
注意此语法仍处于"实验阶段"就浏览器实施而言,可能无法在您的浏览器上运行。
// The ECMAScript 6 way
class Person {
constructor(name) {
this.name = name;
}
getName() {
return this.name;
}
}
let personOne = new Person("Diego");
let personTwo = new Person("Gangelo");
console.log(personOne.getName());
console.log(personTwo.getName());

答案 3 :(得分:0)
既然你说你喜欢我的例子我以为我会发布我的个人偏好。由于函数本身是一个对象,因此无需像其他示例一样返回对象。事实上,JS中的所有东西都是一个对象。
请参阅另一个答案的这个分支:https://jsfiddle.net/6xpgjh94/
var newPerson = function (name) {
var self = this;
self.name = name;
self.getName = function(){
return self.name
};
}
var personOne = new newPerson("Diego");
var personTwo = new newPerson("Gangelo");
console.log(personOne.getName()); // prints Diego
console.log(personTwo.getName()); // prints Gangelo