javascript - Object.create(null) 和 {} 区别是什么
问题描述
Object.create(null) 和 {} 区别是什么 看vuex源码定于对象都是Object.create(null) 为何不直接使用 {}
问题解答
回答1:Object.create(null)没有继承任何原型方法,也就是说它的原型链没有上一层。
console.log(Object.create({}).toString); // function toString() { [native code] }console.log(Object.create(null).toString); // undefined回答3:
Object.create()这个方法是用做继承的,我记得没错应该是叫函数式继承。在js中null是没有任何属性和方法的。你继承了一个null,所以里面没有任何东西。
回答4:Object.create() 方法使用指定的原型对象和其属性创建了一个新的对象。
var c=Object.create(null), b= {}, a=Object.create(Object.prototype);console.log(c, b, a);
Object.create(proto, [ propertiesObject ])proto一个对象,应该是新创建的对象的原型。propertiesObject可选。该参数对象是一组属性与值,该对象的属性名称将是新创建的对象的属性名称,值是属性描述符(这些属性描述符的结构与Object.defineProperties()的第二个参数一样)。注意:该参数对象不能是 undefined,另外只有该对象中自身拥有的可枚举的属性才有效,也就是说该对象的原型链上属性是无效的。抛出异常如果 proto 参数不是 null 或一个对象值,则抛出一个 TypeError 异常。
详细解释
相关文章:
1. 极光推送 - Android app消息推送 百度 极光 个推 信鸽哪个好一些?2. javascript - 为什么当index等于5的时候,不在当前页面跳转到百度?不跳转的代码在倒数第五行3. android - VideoView与百度Map冲突4. javascript - 微信支付问题5. javascript - typescript关于接口,对象字面量额外属性检测问题,为什么使用断言或者变量时就不会检测额外属性?6. html - CSS 怎么筛选没有id的某元素7. javascript - 百度搜索网站,如何让搜索结果显示一张图片加上一段描述,如图;求教8. angular.js - angularjs如何动态改变ng-model值,在controller中获取input中输入的值并组合post发送到后台9. 为什么微信内置浏览器用$_COOKIE取不到值?10. mongoDB怎么把数据导出为csv或excel?
