面试题-javascript-面向对象编程
笔者在某次笔试中遇到这个题:印象很深。
function ClassA() {
var value=4;
this.getValue= function()
{
return value;
}
this.setValue= function(value)
{
this.value=value;
}
}
var classa = new ClassA();
document.write(classa.getValue());
classa.setValue(1);
document.write(classa.getValue());
document.write(classa.value);
写出输出结果
开始以为是411
回来运行发现是441
原因:
ClassA.value 其实就是ClassA.prototype.value,同时this.value 也是这个变量。
那么getValue输出value(4),setValue把this.value改成(1,原本应该是0),然后第二个getValue输出value(4),classa.value 就是1了。