相关疑难解决方法(0)

Javascript继承:调用超级构造函数还是使用原型链?

最近我读到了MDC中的JavaScript调用用法

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call

如下所示的一个例子,我仍然不明白.

他们为什么在这里使用继承呢?

Prod_dept.prototype = new Product();
Run Code Online (Sandbox Code Playgroud)

这有必要吗?因为有一个超级构造函数的调用

Prod_dept()
Run Code Online (Sandbox Code Playgroud)

无论如何,像这样

Product.call
Run Code Online (Sandbox Code Playgroud)

这只是出于常见的行为吗?何时使用超级构造函数调用或使用原型链更好?

function Product(name, value){
  this.name = name;
  if(value >= 1000)
    this.value = 999;
  else
    this.value = value;
}

function Prod_dept(name, value, dept){
  this.dept = dept;
  Product.call(this, name, value);
}

Prod_dept.prototype = new Product();

// since 5 is less than 1000, value is set
cheese = new Prod_dept("feta", 5, "food");

// since 5000 is above 1000, value will be 999
car = new Prod_dept("honda", 5000, "auto");
Run Code Online (Sandbox Code Playgroud)

谢谢你让事情更清楚

javascript inheritance call chaining prototype-programming

78
推荐指数
3
解决办法
8万
查看次数