我想知道,如何在JavaScript中制作这样的东西,或者甚至可以在其中制作这样的东西?
例如,我有:
// ps: this code is abstract and just an idea, not real one
var A = function( inputInstance ) {
if ( inputInstance !== undefined )
this = inputInstance;
else
this = new B();
};
我对JavaScript中的这些可能或不可能的东西感兴趣,因为在各种函数式编程语言中类似的东西是可能的,例如, F#:
http://msdn.microsoft.com/en-us/library/dd233237.aspx
// This object expression specifies a System.Object but overrides the
// ToString method.
let obj1 = { new System.Object() with member x.ToString() = "F#" }
printfn "%A" obj1
如果可以在JavaScript中实现这一点,它可能非常有用,但我认为这是不可能的,因为我不想只为一个对象副本从一个实例设置几个属性:
this.id = inputObject.id;
this.guid = inputObject.guid;
this.data = inputObject.data;
...
我不想声明inputObject
的每个成员,我想将所有现有属性从一个实例设置/复制到另一个实例,只需要像F#这样的函数式语言中的一个优雅行,所以它也是如此有可能在JavaScript?
答案 0 :(得分:0)
不,这是不可能的。但是,您可以使用循环。
for (var key in inputInstance) {
// Remove this if you want to copy inherited properties too
if (inputInstance.hasOwnProperty(key)) {
this[key] = inputInstance[key];
}
}