JavaScript-新对象可以具有到另一个对象的原型链接

时间:2014-07-06 01:06:27

标签: javascript prototype

我在关于JavaScript的教科书中找到了以下代码的3个问题,称为“JavaScript:The Good Parts”。

它说当我们创建一个新对象时,我们可以选择应该是其原型的对象。

第1部分:假设我们有以下对象

var person = {
    first_name: "Tim",
    last_name: "Thompson",
    middel_name: "Jack",
    nick_name: "GoldTeeth",
    age:30
  };

第2部分:然后我们将使用以下代码

将Create函数添加到Object
Object.create = function(o){
    var F = function(){};
        F.prototype = o;
        return new F(); 
}

然后我们可以使用Object.create()函数将任何新对象的原型映射到“person”

第3部分:示例//

  var another_person = Object.create(person);
  alert(another_person.first_name); //Tim
  1. 为什么在创建函数体中为什么我们将F赋给函数
  2. 并在最后返回一个新的F()
  3. 为什么在第3部分中我们将another_person分配给函数
  4. 据我所知,JavaScript函数是对象,但我无法遵循逻辑。有谁可以帮助我?

1 个答案:

答案 0 :(得分:0)

如果您有这样的代码:

var foo = bar;

然后,名为foo变量将获得 bar。因此bar分配给foo foo分配给bar,因此您的问题存在一些误解。

关于发布的代码。第一部分创建一个对象并将其分配给person。第二部分为Object.create分配一个函数。该函数创建一个新的空函数并将其分配给F。完成此操作后,名为o的参数将分配给F的{​​{1}}。由于prototype具有F,因此可以对其进行实例化,并返回prototype的新实例。第三部分是测试代码。需要F并使用person实例化新的Object.create