[英]Add a custom field/key to a Javascript Date object
我处于一种最干净,最不麻烦的方式来完成工作的情况下,就是通过使用额外的字段来扩展Javascript Date对象。 extra字段将存储有关该特定日期的起源的一些元数据,然后页面JS在渲染UI时将其使用。
我的问题是-以下内容是否是个好主意:
d = new Date();
d._my_ns_metadata = "some meta-data comes here";
我尝试阅读有关JS猴子补丁的内容,但似乎每个人都在谈论将功能定义更改/添加到对象的Prototype。 在这里,我只是向Date对象添加一个单独的字段/键。
您的方法存在的问题是,只有Date
实例才能获取该元数据。 除非您具有自动将其扩展到实例的其他功能 ,否则其他任何实例都不会。 就像是:
function dateWithMetaData(meta){
var aDate = newDate();
aDate._my_ns_metadata = meta;
return aDate;
}
var d = dateWithMetaData("some meta-data comes here");
但是,那您将在哪里放置该函数,以便可以在任何地方为Date
任何实例立即访问它? 当然还有Date.prototype
。 在对象的原型中添加某些内容使其可用于其所有实例。 因此,您可以执行以下操作:
// Modifying the prototype
Date.prototype.setMetaData = function(meta){
this._my_ns_metadata = meta;
}
// Now any instance of Date has setMetaData
var d = new Date();
d.setMetaData("some meta-data comes here");
var x = new Date();
x.setMetaData("some meta-data comes here");
通过设计,JS允许修改本机对象。 但是,不建议您修改您不拥有的对象。 您可能无意间破坏了东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.