如何检查是否在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”。
答案 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
根据对它的调用所使用的表达式来更改它返回的内容并不是一个很好的解决方案。