在Javascript中实现对象算法是否有本机支持?

在Javascript中实现对象算法是否有本机支持?,javascript,syntax,Javascript,Syntax,想想Date()对象: 我可以制作一些物体吗,比如说Clovers(): theseClovers = new Clovers(); theseClovers.count = 10; thoseClovers = new Clovers(); thoseClovers.count = 4; theseClovers - thoseClovers; //returns b = new Clovers(); b.count = 6 这是我设想的方式(但完全是假设的): 因此,它的工作原理非常相似

想想Date()对象:

我可以制作一些物体吗,比如说
Clovers()

theseClovers = new Clovers();
theseClovers.count = 10;
thoseClovers = new Clovers();
thoseClovers.count = 4;

theseClovers - thoseClovers; //returns b = new Clovers(); b.count = 6
这是我设想的方式(但完全是假设的):

因此,它的工作原理非常相似:

alert(new Clovers(new Clovers(10)-new Clovers(5)).count);
//or long written:
var a=new Clovers(10);
var b=new Clovers(4);
var c=new Clovers(a-b);
alert(c.count);
但是,最好有一个自定义的添加函数,类似于Array.prototype.concat:

 Clovers.prototype.concat=function(clover){
   return new Clovers(this.count-clover.count);
 };
这样使用:

var a=new Clovers(10);
var b=new Clovers(5);
var c=a.concat(b);
alert(c.count);

感谢Pointy和Karl Johan Sjögren的创意…

您可以向对象(或原型)添加
.valueOf()
函数;除了数字之外,它类似于
.toString()
。可能的重复实际上我更喜欢重载valueOf()的第一种技术。这正是Date的工作方式,因为
Date()-Date()
实际上返回一个值。这太完美了!谢谢你的鱼@不客气。请把它标记为答案。。。顺便说一句,它并不是真的重载,而是重写
alert(new Clovers(new Clovers(10)-new Clovers(5)).count);
//or long written:
var a=new Clovers(10);
var b=new Clovers(4);
var c=new Clovers(a-b);
alert(c.count);
 Clovers.prototype.concat=function(clover){
   return new Clovers(this.count-clover.count);
 };
var a=new Clovers(10);
var b=new Clovers(5);
var c=a.concat(b);
alert(c.count);