检查是否在JavaScript中访问了类变量

时间:2014-02-09 15:46:08

标签: javascript html class variables web

如何检查是否在JavaScript中访问“class”变量?

例如:

function Class(){

    this.string = "foo";
    this.saySomething = saySomething;

    if(/*not accessing saySomething*/){
    return "empty";
    }

}

function saySomething(){

    alert(this.string);

}

所以

alert(Class());

应警告“空”和

alert(Class().saySomething())

应输出“foo”。

2 个答案:

答案 0 :(得分:1)

实现此目的的唯一方法是使用toString然后调用它,例如

function Class() {
    this.string = 'foo';
}
Class.prototype.saySomething = function () {
    return this.string;
};
Class.prototype.toString = function () {
    return 'empty';
};
// and use
var c = new Class();
c + '';           // 'empty', or
alert(c);         // 'empty'
c.saySomething(); // 'foo'

答案 1 :(得分:0)

  

所以

     

alert(Class());

     

应警告“空”和

     

alert(Class().saySomething())

     

应输出“foo”。

你不能(合理地)这样做,因为Class().saySomething()中发生的事情是Class()被调用并返回一些东西,然后我们(尝试)在其上调用saySomething()Class中的代码无法知道它是作为整体表达式Class().saySomething()的一部分被调用的。所有它知道它被调用,它不知道调用它的代码将与它的返回值有关。

当然,你可以通过传递参数来告诉,但我怀疑如果你问一个新的问题,描述你想要实现的更广泛的目标,我们可以帮助你完成它。 Class根据对它的调用所使用的表达式来更改它返回的内容并不是一个很好的解决方案。