说我有
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({parameters})
相同的结果答案 0 :(得分:3)
您可以执行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;
如果您不关心Alias_Person
是否new
被调用,只想返回Person
个实例,请查看Use of .apply() with 'new' operator. Is this possible?,这可能导致像
function Alias_Person() {
var inst = Object.create(Person.prototype);
return Person.apply(inst, arguments) || inst;
}