如何使函数的别名与javascript中的new一起使用

How to make alias of Function to be used with new in javascript

本文关键字:new 中的 一起 javascript 何使 函数 别名      更新时间:2024-06-29

假设我有

function Person(birthDate){ // parameter accepting is unknown to the alias maker
    this.birthDate = birthDate;    
    this.getAge = function() {
      return new Date().getFullYear() - this.birthDate.getFullYear();
    };
};

我只是把函数名"Person"给了一些不知道Person能接受多少个参数的人,并让他把Person作为的别名

该别名的工作方式应与Person 相同

var dave = new Alias_Person(new Date(1909, 1, 1)); // here number of parameters is unknown
dave.getAge(); //returns 100.

别名应该是什么?

请注意,别名应该有自己的功能,而不仅仅是Person的引用

目前我做,

var Alias_Person = function(){
    return Person.apply(null, arguments);
  };

但这并没有得到正确的结果。

编辑:我的最终目标是摆脱与Date一起使用的"new"。简单地使用Date()总是得到当前的日期和时间。我想要这种

My_Date({parameters})返回与"new Date({arameters})"相同的结果

您可以简单地执行var Alias_Person = Person

如果出于某种原因确实需要使用不同的函数,则需要重新分配原型,以便两个构造函数使用相同的对象进行继承。

function Alias_Person() {
    return Person.apply(this, arguments);
//                      ^^^^ also don't forget to pass the instance
}
Alias_Person.prototype = Person.prototype;

如果您不关心是否使用new调用Alias_Person,而只想返回一个Person实例,请查看带有';新';操作人员这可能吗?,这可能会导致类似的情况

function Alias_Person() {
    var inst = Object.create(Person.prototype);
    return Person.apply(inst, arguments) || inst;
}