为什么在构造函数中注释/取消注释alert()会将变量切换为obj实例的一部分

时间:2015-12-15 13:09:06

标签: javascript tostring

在下面的代码中,如果我在构造函数中注释//alert("Your Name is: " +fname);,那么'alert(p1.fname); alerts "Suresh" and If I remove the comment out the alert(“你的名字是:”+ fname); {{1} }:fname未定义`

then browser console gives out the error

我对这种行为感到困惑。请解释

感谢

1 个答案:

答案 0 :(得分:2)

您正在使用第一个alert()中不存在的变量,因此会收到一条错误消息,告诉您该变量未定义。

fname函数中没有名为person()的变量,它被称为this.fname,就像你创建它一样

function person () {
    this.fname = "Suresh";
    alert("Your Name is: " + this.fname);
  }

  var p1 = new person();

  alert(p1.fname);

FIDDLE