在Javascript中创建简单的构造函数

时间:2017-08-18 10:53:23

标签: javascript constructor

我正在尝试编写一个构造函数,当调用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]

有什么想法吗?

编辑:显然我不允许触及现有代码,因为这个练习的提示是:«创建一个构造函数,其实例将返回递增的数字»

3 个答案:

答案 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());