我创建了一个对象,如下

 var lassie = {
 name: 'Lassie',
 breed: 'Collie',
 speak: function () {
 return 'Woof! Woof!'; }
 };


我使用javascript的Object.create方法创建了另一个对象

var obj = Object.create(lassie);


现在,当我控制台obj时,它给了我一个空白的对象。
但是当我控制台obj.speak()时,它给了我“糟糕!纬!' 。

有人可以解释为什么吗?

最佳答案

lassie作为第一个参数传递给Object.create(),以将prototypeobj设置为lassie;迭代lassie返回属性作为第二个参数



var lassie = {
   name: 'Lassie',
   breed: 'Collie',
   speak: function() {
     return 'Woof! Woof!';
   }
 };

 var obj = Object.create(lassie, (function() {
   var _obj = {};
   for (var prop in lassie) {
     _obj[prop] = {
       value: lassie[prop],
       writable: true,
       enumerable: true,
       configurable: true
     }
   }
   return _obj
 }()));

alert(obj.speak())

10-07 17:24