关于用Object.create创建出来的对象的实例问题

用Object.create(obj)创建出来的对象是以obj为原型的一个对象,该对象是obj的类型的实例可以理解,但是为什么这个对象同时也是以obj为原型的类型的实例呢?
代码如下:

function Father(){};
var father=new Father;
function Son1() {};
Son1.prototype=father;
function Son2() {};
Son2.prototype=father;

var target=Object.create(father);
console.log(target instanceof Son1);   //true
console.log(target instanceof Son2);   //true

总感觉target和Son1、Son2是同级,但是结果是target同时是Son1和Son2的实例,这很费解~
阅读 2.2k
2 个回答
Object.create =  function (father) {
    var F = function () {};
    F.prototype = father;
    return new F();
};

__proto__指向构造函数的原型
prototype 是方法(Function)特有的属性,指向原型对象
target.__proto__就指向了F.prototype ,即father

http://www.tuicool.com/articl...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题