如何在调用函数时使用该函数?

时间:2012-10-10 18:12:51

标签: javascript

抱歉 - 我无法准确解释这个问题,所以我给你举个例子。

window.onload = function() {
    var obj = new classs(2);
    alert(obj.x2);

    function classs(value){
        this.value = value;

        var multiplication = function(value, n){
            console.log(n);
            return parseInt(value) * parseInt(n);
        }

        this.x1 = multiplication(this.value, 1);
        this.x2 = multiplication(this.value, 2);
        this.x3 = multiplication(this.value, 3);
    }
}

所以我只调用obj.x2,但console.log(n);打印3次。我做错了什么?

3 个答案:

答案 0 :(得分:3)

读取x2属性不会导致任何内容记录到控制台,它只会读取已经计算的值。

创建x1对象时会计算属性x2x3classs,因此在您阅读{{1}之前,会将值记录到控制台中属性。如果您注释掉使用x2属性的行,则仍会记录这些值。


如果要在创建对象后进行计算,则需要使用函数:

x2

用法:

this.x2 = function() { multiplication(this.value, 2); }

答案 1 :(得分:0)

因为您只需调用乘法3次

创建对象时

var obj = new classs(2);

它在它内部执行代码,你可以看到有3个函数调用“乘法”。

this.x1 = multiplication(this.value, 1);
this.x2 = multiplication(this.value, 2);
this.x3 = multiplication(this.value, 3);

答案 2 :(得分:0)

当执行类时,当设置x1,x2和x3时,乘法函数执行三次。这就是为什么console.log被击中3次的原因。另一方面,警报只发生一次,因为你在obj.x2上调用警报。