我正在尝试编写一个构造函数,当调用increment
时,它会输出:
var increment = new Increment();
alert(increment); // 1
alert(increment); // 2
alert(increment + increment); // 7
我想这样做:
var increment = 0;
function Increment(increment){
increment += 1;
};
但警报输出[object object]
。
有什么想法吗?
编辑:显然我不允许触及现有代码,因为这个练习的提示是:«创建一个构造函数,其实例将返回递增的数字»
答案 0 :(得分:4)
通常,您需要一种递增值的方法,您需要调用它。
function Increment(value) {
this.value = value || 0;
this.inc = function () { return ++this.value; };
}
var incrementor = new Increment;
console.log(incrementor.inc()); // 1
console.log(incrementor.inc()); // 2
console.log(incrementor.inc() + incrementor.inc()); // 7
但是您可以使用构造函数并实现toString
函数来获取原始值。
此解决方案不可取,但适用于教育用途。 (它不适用于console.log
,因为它需要一个原始值的预期环境。)
function Increment(value) {
value = value || 0;
this.toString = function () { return ++value; };
}
var increment = new Increment;
alert(increment); // 1
alert(increment); // 2
console.log(increment + increment); // 7
答案 1 :(得分:0)
这里有一些概念上错误的东西,为了简单起见,你可以做的是:
function Increment(){
this.value = 0;
}
Increment.prototype.increase = function(){this.value++}
Increment.prototype.getValue = function(){return this.value}
let incrementInstance = new Increment();
incrementInstance.increase();
console.log(incrementInstance.getValue())
基本上你需要做的是创建一个Increment实例,然后改变它的值
答案 2 :(得分:0)
function Increment(initial){
this.value = initial
}
Increment.prototype = {
constructor: Increment,
inc: function(){
return ++this.value;
}
}
increment = new Increment(0);
alert(increment.inc() + increment.inc());