新对象创建问题

时间:2013-10-20 22:39:34

标签: javascript object this

好的,以下函数充当构造函数来创建一个Employee对象(没问题)。但是,当我使用这个功能创建3个新员工时,我在某处弄乱了。

我知道我应该设置属性并打印员工的姓名和电话号码,但我遗漏了某些东西或某些东西在错误的地方。

提前感谢您的帮助。

  function Employe() {
    var = name;
    var = phone;
    this.getName = function () {
      return this.name;
    }
    this.setName = function (name, phone) {
      this.name = name;
      this.phone = phone;
    };
  }

  var emp1 = newEmployee;
  this.Name = 'jo';
  this.Phone = ' 555-5551'  
  document.write(Employee.name Employee.phone);

  var emp2 = newEmployee;
  this.Name = 'jim';
  this.Phone = '555-5552';
  document.write(Employee.name Employee.phone);

  var emp3 = newEmployee;
  this.Name = 'jon';
  this.Phone = '555-5553';
  document.write(Employee.name Employee.phone);

3 个答案:

答案 0 :(得分:0)

以下内容:

> var emp1 = newEmployee;

左侧的变量将被赋予评估右侧表达式的结果。没有标识符newEmployee,因此您将收到错误消息。你可能想写的是:

var emp1 = new Employee();

这将调用构造函数,构造函数将返回一个新实例,其引用将分配给 emp1

然后你有:

>  this.Name = 'jo';

输入执行上下文时设置 this 的值。对于全局代码,它始终引用全局对象(相当于浏览器中的 window )。因此,上面的行创建了全局对象的 Name 属性,并赋值'jo';

你想要的可能是:

emp1.setName('jo','555-5551');

该方法的名称似乎不合适,因为它设置了姓名和电话号码。

> document.write(Employee.name Employee.phone);

由于您已将属性添加到实例(emp1),因此可能是您要阅读的属性:

document.write(emp1.name + ' ' + emp1.phone);

或使用 getName 方法:

document.write(emp1.getName() + ' ' + emp1.phone);

等等。

答案 1 :(得分:0)

您的代码示例存在很多问题。构造函数拼写错误。应该创建员工实例,如:

var emp1 = new Employee();

实例属性应设置为:

emp1.setName( '约翰');

你还将两个二人组合成一个,这令人困惑。

要访问实例属性,您应该使用:

emp1.getName();

Employee.Name

答案 2 :(得分:0)

是的,你有很多错误,我认为这基本上就是你想要实现的目标。

  function Employee(){
this.name;
this.phone;
this.getName = function(){
return this.name;
};
this.setName = function(name, phone){
 this.name = name;
 this.phone = phone;
 };
}

function employ(){

  var emp1 = new Employee();
  emp1.name = 'jo';
  emp1.phone = ' 555-5551' ; 

   alert(emp1.getName());

}

http://jsfiddle.net/umNTs/