Object.create(null)和{}

今天看了一篇有关Object.create(null)的文章,理解后,将自己的理解记下来。

1.在面向对象时,看过简单的对象继承,可以这么写
var student {
    name:'student',
    setAge: function(age){
        return age;
    }
}
var xiaoming = Object.create(student)

student是小明的原型对象。

 
2.原型链:
当前的原型链是这样的

 

可以看到最终继承是null,那么可否认为,Object.create(null)是创建一个没有任何属性的对象;
 
从而所谓的{}空对象,是继承自Object
{} 
//那么这两类声明得到的结果是一样的
Object.create(Object.prototype)

 

3.分析
(1)MDN上的Object.create()的定义
const student={
  name:'student',
    setAge: function(age){
        return age;
    }
};
子对象自身的属性class必须声明为对象
const xiaoming= Object.create(student,{
    //class属性可以修改
    class:{
        writable:true,
        configurable:true,
        value:'B'
    }
});
 
(2)打印分析
仔细回顾了一下对象和继承:
 

 

那么,Object.create(null),根据上图推测,下拉展开,应该是子对象自身属性和__proto,此处的__proto__指向null,在MDN中,null的定义:

 

所以得到的结果是:没有任何属性的对象,纯粹的空。
 

 

 借鉴了MDN、廖雪峰的JavaScript面向对象详解、及文章 https://mp.weixin.qq.com/s/bPpPnzmOJtBdEmdcLeyHQw,谢谢。

 
 

转载于:https://www.cnblogs.com/ogrowup/p/8821292.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值