对象属性在javascript中无法正常工作

时间:2015-09-13 09:51:05

标签: javascript

我正在使用javascript中的对象属性,我遇到了一个我无法找到的问题。在这个javascript程序中,我创建了名称和年龄的对象属性,并创建了getter和setter。



function people(name, age) {
  this.name = name;
  this.age = age;
  Object.defineProperty(this, "age", {
    get: function() {
      return age;
    }
  }, {
    set: function(value) {
      if (value < 18) {
        alert("You are below legal age");
      } else {
        age = value;
      }
    }
  })
  Object.defineProperty(this, "name", {
    get: function() {
      return name;
    }
  })
}
var pep = new people("John", 22);
document.write(pep);
&#13;
&#13;
&#13;

在我创建一个对象并尝试打印它后,我得到的输出为[object,object]。但我可以使用pep.namepep.age打印姓名和年龄。当我尝试使用pep.age=40更改年龄值并打印它时,它会显示旧值而不是新值。

1 个答案:

答案 0 :(得分:0)

您的代码只有一堆语法错误。最好先通过调试器/语法检查来运行我们的代码。这是你的代码,重新格式化,正确的语法正常工作:

function people(name, age) {
    this.name = name;
    this.age = age;


    Object.defineProperty(this, 'age', {
        get: function() {
          return age;
        },
        set: function(value) {
            if (value < 18) {
                alert("You are below legal age");
            } else {
                age = value;
            }
        }
    });
    Object.defineProperty(this, 'name', {
        get: function() {
          return name;
        }
    });
}

var pep = new people("John", 22);
pep.age = 25;
alert(pep.age); //25