两个构造函数,如何让其中一个构造函数实例化的时候,拥有属性为另一个构造函数的实例

两个构造函数,如何让其中一个构造函数实例化的时候,拥有属性为另一个构造函数的实例

function A() {
  this.name = 'ff'
}
function B() {
  this.age = '18'
}

let a = new A()

希望 实例 a 创建的时候,拥有 构造函数 B 的实例,A 原型上该如何绑定?
除了A 继承 B 这种方式,因为 A 是某个确定的构造函数

阅读 1.2k
1 个回答

如果不能改变 A 本身的话,自能通过原型链来处理,但是打印整个对象的时候是打印不出来的,自能通过 a.age 拿到参数;

function A() {
    this.name = 'ff'
}
function B() {
    this.age = '18'
}

A.prototype = { ... new B() }; // { name: 'ff' }
console.log( new A().age );  // 18

另外一种方法就是覆写 A 方法(如果可以的话),这样打印就都 OK 了。

function A() {
    this.name = 'ff'
}
function B() {
    this.age = '18'
}

const AProxy = A;
A = function(){
    AProxy.call(this);
    B.call(this);
}

console.log( new A() ); // { name: 'ff', age: '18' }
console.log( new A().age ); // 18
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题