将Call方法与构造函数一起使用

时间:2019-06-17 20:45:42

标签: javascript

我有一个定义如下的构造函数:

function Person(fname, lname) {
  this.firstName = fname;
  this.lastName = lname;
  this.printName = function(fname, lname){
      console.log("Name: " + this.firstName + " " + this.lastName);
  }
}

现在,我可以使用new关键字从构造函数中创建一个对象,并调用“ printName”方法以打印创建的“ Person”对象的firstName和lastName:

const p = new Person("John", "Doe");
p.printName(); // output: 'Name: John Doe'

我还可以将内置JavaScript .call方法与构造函数一起使用,以创建一个新对象,如下所示:

Person.call({}, "John", "Doe");

这是我的问题: 在这种情况下如何调用“ printName”方法?

1 个答案:

答案 0 :(得分:2)

由于直接调用该方法,因此需要从中返回一个值:

function Person(fname, lname) {
  this.firstName = fname;
  this.lastName = lname;
  this.printName = function(){
      console.log("Name: " + this.firstName + " " + this.lastName);
  }
  return this;
}

然后您可以调用结果,例如:

Person.call({}, "John", "Doe").printName();