【发布时间】:2014-01-22 10:23:14
【问题描述】:
当我使用原型创建对象时,我希望能够为变量分配默认值。
当我尝试为变量分配默认值时,它们总是“未定义”。
我试图找到答案,但我尝试过的所有可能的解决方案都不起作用。
我的问题是:
- 为什么我用值启动的变量的值是“未定义”
-
我该如何解决我的问题?
(function() { EmployeeNS = {}; EmployeeNS.Employee = function() { var _firstName; var _lastName; var _employeeID = 'Unassigned'; } EmployeeNS.Employee.prototype.setFirstName = function(fName) { this._firstName = fName; }; EmployeeNS.Employee.prototype.getFirstName = function() { return this._firstName; }; EmployeeNS.Employee.prototype.setLastName = function(lName) { this._lastName = lName; }; EmployeeNS.Employee.prototype.getLastName = function() { return this._lastName; }; EmployeeNS.Employee.prototype.setEmployeeID = function(employeeID) { this._employeeID = employeeID; }; EmployeeNS.Employee.prototype.getEmployeeID = function() { return this._employeeID; }; EmployeeNS.Worker = function() { var _department; } EmployeeNS.Worker.prototype = new EmployeeNS.Employee(); EmployeeNS.Worker.prototype.constructor = Worker; EmployeeNS.Worker.prototype.setDepartment = function(department) { this._department = department; }; EmployeeNS.Worker.prototype.getDepartment = function() { return this._department; }; })(); function createWorker() { var x = new EmployeeNS.Worker(); x.setFirstName("John"); x.setLastName("Doe"); x.setDepartment("Transport"); var message = x.getFirstName() + " " + x.getLastName() + " (Department: " + x.getDepartment() + " / EmployeeID: " + x.getEmployeeID() + ")"; alert(message); }
谢谢
【问题讨论】:
-
undefined到底是哪个值?请注意,您在构造函数中创建的变量仅对构造函数本地,它们与原型方法中的this.X不同。 IE。this._employeeID确实是undefined,因为你从来没有创建过这个属性。
标签: javascript variables object prototyping