0

好的,下面的函数充当构造函数来创建一个 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);
4

3 回答 3

0

在下面的:

> var emp1 = newEmployee;

左边的变量将被赋值为右边表达式的计算结果。没有标识符newEmployee,所以你会得到一个错误。你可能打算写的是:

var emp1 = new Employee();

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

然后你有:

>  this.Name = 'jo';

this的值是在进入执行上下文时设置的。对于全局代码,它总是引用全局对象(相当于浏览器中的窗口)。所以上面的行创建了一个全局对象的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);

等等。

于 2013-10-20T23:13:27.343 回答
0

您的代码示例有很多问题。构造函数拼写错误。员工实例应该像这样创建:

var emp1 = new Employee();

实例属性应设置为:

emp1.setName('约翰');

您还将两个二传手合二为一,这令人困惑。

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

emp1.getName();

不是:

员工姓名

于 2013-10-20T23:16:01.927 回答
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/

于 2013-10-20T23:32:41.870 回答