gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:21:33 25 4
gpt4 key购买 nike

说我有

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);
};

但这并没有返回正确的结果。

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

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

最佳答案

您只需执行var Alias_Person = Person即可。

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

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;
}

关于javascript - 如何使函数的别名与 JavaScript 中的 new 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28765843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com