var a1 = new A("test")
var a2 = new A("test2")
console.log(a2.getOtherValue(a1)) // -> expected "test"
a2.setOtherValue(a1, "test3") // set another object value
console.log(a1.getValue()) // -> expected "test3"
我如何实现这个?
答案 0 :(得分:1)
您可以使用getter和setter方法创建属性,在添加时,您可以改变自己的值。使用当前对象变换其他对象是一个坏主意。
以下是一个示例:
function MyNumber(value) {
var _value = value;
Object.defineProperty(this, 'value', {
get: function() {
return _value;
},
set: function(v) {
if(!isNaN(v))
_value = v;
}
});
}
MyNumber.prototype = (function() {
var proto = {};
proto.add = function(o2) {
if (o2 instanceof MyNumber) {
this.value = this.value + o2.value;
} else {
throw new Error('Mismatched type. Expected an object of type MyNumber but got ' + o2.constructor.name);
}
}
return proto;
})();
var o1 = new MyNumber(10);
var o2 = new MyNumber(20);
o1.add(o2);
console.log(o1.value);
var o3 = {
value: 40
}
try {
o1.add(o3);
} catch (ex) {
console.log(ex.message)
}