我希望這些實例的原型相同,但以下相等性檢查的計算結果爲false。強制__proto__相等
var emp1 = new(EmployeeScope())("John");
var emp2 = new(EmployeeScope())("Amit");
var mgr1 = new(ManagerScope())("Robert", "Data");
var mgr2 = new(ManagerScope())("Alex", "Science");
emp1.getName() // John
emp2.getName() // Amit
mgr1.getDept() // Data
mgr2.getDept() // Science
mgr1.getName() // Robert
mgr2.getName() // Alex
emp1.__proto__ === emp2.__proto__ //false
mgr1.__proto__ === mgr2.__proto__ //false
function EmployeeScope() {
var name;
function Employee(newName) {
name = newName;
}
Employee.prototype.getName = function() {
return name
};
Employee.prototype.setName = function(newName) {
name = newName
};
return Employee;
}
function ManagerScope() {
var Employee = EmployeeScope();
var dept;
function Manager(newName, newDept) {
new Employee(newName);
dept = newDept;
}
Manager.prototype = Object.create(Employee.prototype);
Manager.prototype.constructor = Manager;
Manager.prototype.getDept = function() {
return dept
};
Manager.prototype.setDept = function(newDept) {
dept = newDept
};
return Manager;
}
我投票,因爲有關的編程風格和設計問題上codereview.stackexchange.com屬於關閉這一問題作爲題外話。 – Barmar
好的,我刪除了這個問題。應該問codereview.stackexchange.com –
好吧,堅持下去,有些東西不能按照你的要求工作,所以從這方面來說它屬於這裏。 – trincot