调用基础构造函数 – Javascript

前端之家收集整理的这篇文章主要介绍了调用基础构造函数 – Javascript前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有两种方式调用子构建器中的父构造函数.
var A = function A() {
  this.x = 123;
};

var B = function B() {

  // 1. call directly
  A.call(this);

  // 2. call from prototype
  A.prototype.constructor.call(this);
};

B.prototype = Object.create(A.prototype);
B.prototype.constructor = B;

有什么情况下,一个人会比另一个更安全/更好,还是总是等同的?

解决方法

直接使用基础构造函数总是更好,原因如下:

>更快解释器不需要访问prototype.constructor.
>更安全考虑下面的程序

A从C继承,但是我忘了将A.prototype.constructor设置为A,所以现在指向C.这样,如果我们使用第二种方法,则会导致构造函数B中的问题:

var C = function C() {
    // some code
};

var A = function A() {
  this.x = 123;
};

A.prototype = Object.create(C.prototype);
// I forgot to uncomment the next line:
// A.prototype.constructor = A;

var B = function B() {

  // 1. call directly
  A.call(this);

  // 2. call from prototype
  A.prototype.constructor.call(this); // A.prototype.constructor is C,not A
};

B.prototype = Object.create(A.prototype);
B.prototype.constructor = B;
原文链接:https://www.f2er.com/js/152626.html

猜你在找的JavaScript相关文章