相关疑难解决方法(0)

Crockford的对象创建技术发生了什么?

只有3行代码,但我很难完全掌握这个:

Object.create = function (o) {
    function F() {}
    F.prototype = o;
    return new F();
};
newObject = Object.create(oldObject);
Run Code Online (Sandbox Code Playgroud)

(来自Prototypal Inheritance)

  1. Object.create()通过创建一个名为的空函数开始F.我认为函数是一种对象.这个F对象存放在哪里?在全球范围内我猜.

  2. 接下来,我们oldObject传入o,成为功能的原型F.函数(即对象)F现在从我们"继承" oldObject,在名称解析将通过它的路上.很好,但我很好奇默认原型是什么对象,对象?这对于函数对象也是如此吗?

  3. 最后,F实例化并返回,成为我们的newObject.new这里的操作是否必要?还没有F提供我们需要的东西,或者功能对象和非功能对象之间是否存在重要区别?显然,使用这种技术不可能有一个构造函数.

下次Object.create()调用会发生什么?全局功能F被覆盖了吗?当然它不会被重用,因为这会改变以前配置的对象.如果多个线程调用会发生什么Object.create(),是否有任何类型的同步来防止竞争条件F

javascript creation object prototypal-inheritance

25
推荐指数
2
解决办法
6096
查看次数