我正在使用object.create根据我创建的原型创建对象。
这是原型
var employeePrototype = {
calulateTax: function() {
console.log(salary * taxRate);
}
};
这是我创建的对象。
var jack = Object.create(employeePrototype);
jack.salary = 25000;
jack.taxRate = .40;
jack.calulateTax();
当我致电jack.calculateTax时,出现以下错误
index.html:14未捕获的ReferenceError:未定义工资 在Object.calulateTax
答案 0 :(得分:3)
您必须使用salary
来使用实例的taxRate
和var employeePrototype = {
calulateTax: function() {
console.log(this.salary * this.taxRate);
}
};
var jack = Object.create(employeePrototype);
jack.salary = 25000;
jack.taxRate = .40;
jack.calulateTax();
?
答案 1 :(得分:1)
使用Object.create()
代替使用class
更为传统。这是使用以下一种方法完成的方法:
class Employee {
salary = 25000;
taxRate = .40;
calulateTax () {
console.log(this.salary * this.taxRate);
}
}
const jack = new Employee();
jack.calulateTax();
class字段是处于阶段3的TC39/proposal-class-fields的一部分,但已经是Chrome,Firefox和Node.js的一部分,或者可以使用Babel。
要获得ES2015支持,您只需将初始化移至constructor
:
class Employee {
constructor () {
this.salary = 25000;
this.taxRate = .40;
}
calulateTax () {
console.log(this.salary * this.taxRate);
}
}
const jack = new Employee();
jack.calulateTax();