如何使用自定义原型中的函数-object.create

时间:2019-05-10 17:34:05

标签: javascript

我正在使用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

2 个答案:

答案 0 :(得分:3)

您必须使用salary来使用实例的taxRatevar 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的一部分,但已经是ChromeFirefoxNode.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();