对象文字可重用函数

Jen*_*er 2 javascript

请查看以下代码以获取更多信息.

var person = {
    firstname:"john",
    lastname:"doe",
    greet: function(){
        return "hello " + this.firstname + " " + this.lastname; 
    }
}

console.log(person.greet());
Run Code Online (Sandbox Code Playgroud)

如何使上面的对象文字函数greet()dymanic?就像我可以通过params值例如person.greet('jessie','jay')将返回hello jessie jay

使用构造函数方法(实例)以使函数动态化和可重用是否更好?我发现object literal只是用来组织代码.

Tus*_*har 5

我建议你使用Constructor函数.此模式称为工厂模式.此处的函数充当类,并且可以为每个人创建新对象.

function Person(firstname, lastname) {
    this.firstname = firstname;
    this.lastname = lastname;
}

Person.prototype.greet = function () {
    return 'Hello ' + this.firstname + ' ' + this.lastname;
};

var jon = new Person('Jon', 'Skeet');
var tushar = new Person('Tushar', 'Jadhav');

console.log(jon.greet()); // Hello Jon Skeet
console.log(tushar.greet()); // Hello Tushar Jadhav
Run Code Online (Sandbox Code Playgroud)