一、什么是"非构造函数"的继承?

比如,现在有一个对象,叫做"医生"。

1
2
3
var doctor = {
    doc : "医生"
};

还有一个对象,叫做"中国人"。

1
2
3
var chinese = {
    chi : "中国人"
}

//请问怎样才能让"医生"去继承"中国人",也就是说,我怎样才能生成一个"中国医生"的对象?
//这里要注意,这两个对象都是普通对象,不是构造函数,无法使用构造函数方法实现"继承"。

二、object()方法

1
2
3
4
5
function object(o) {
  function F() {}
  F.prototype = o;
  return new F();
}

这个object()函数,其实只做一件事,就是把子对象的prototype属性,指向父对象,从而使得子对象与父对象连在一起。

使用的时候,第一步先在父对象的基础上,生成子对象:

1
var doctor = object(chinese);

//然后,再加上子对象本身的属性:

1
doctor.doc = '医生';
1
2
3
console.log(doctor.chi);
 
console.log(doctor.doc);