Object.create(null)

使用Object.create(null)产生的对象是一个没有原型的对象,相对于直接使用 {} 产生的对象,后者会产生一个原型链接到Object.prototype,前者相当于一个纯净的map不会有Object.prototype的属性或者方法污染,自然前者遍历的时候也不需要使用hasOwnProperty来判断当前属性是否为自有的。

Object.create函数的作用就是创建一个对象,并且让对象的原型为函数提供的参数。null作为一个对象,它是Object.prototype的原型,通过下面的代码可以验证。而现有的很多方法例如toString、valueOf等都是来自于Object.prototype,因此如果对象的原型时null,那么这个对象将不包含任何Object.prototype的函数和变量。

Object.prototype.__proto__ === null

原文地址:https://www.cnblogs.com/lee88688/p/11225048.html

时间: 2024-08-30 17:01:27

Object.create(null)的相关文章

object.create(null) 和 {}创建对象的区别

原文 简书原文:https://www.jianshu.com/p/43ce4d7d6151 创建对象的方法 如果要创建一个空的对象,可以使用如下的三种方法 var obj1 = {}; var obj2 = Object.create(null); var obj3 = new Object(); 创建空对象的区别 要创建一个干净的空对象,应该使用Object.create(null)而不是剩下两种. 通过做Objist.create(NULL),我们显式指定NULL作为它的原型.所以它绝对没

Object.create(null)、Object.create({})、{} 三者创建对象的区别

参考 1.先看看我们经常使用的{}创建的对象是什么样子的: var o = {a:1}; console.log(o) 从上图可以看到,新创建的对象继承了Object自身的方法,如hasOwnProperty.toString等,在新对象上可以直接使用. 2.再看看使用Object.create()创建对象: var o = Object.create(null,{ a:{ writable:true, configurable:true, value:'1' } }) console.log(

前端开发者进阶之ECMAScript新特性--Object.create

前端开发者进阶之ECMAScript新特性[一]--Object.create Object.create(prototype, descriptors) :创建一个具有指定原型且可选择性地包含指定属性的对象 参数:prototype 必需.  要用作原型的对象. 可以为 null.descriptors 可选. 包含一个或多个属性描述符的 JavaScript 对象."数据属性"是可获取且可设置值的属性. 数据属性描述符包含 value 特性,以及 writable.enumerab

使用 Object.create 创建对象,super 关键字,class 关键字

ECMAScript 5 中引入了一个新方法:Object.create().可以调用这个方法来创建一个新对象.新对象的原型就是调用 create 方法时传入的第一个参数: var a = {a: 1}; // a ---> Object.prototype ---> null var b = Object.create(a); // b ---> a ---> Object.prototype ---> null console.log(b.a); // 1 (继承而来)

Object.create(): the New Way to Create Objects in JavaScript

There are a lot of ways to create Objects in JavaScript, perhaps even more to integrate inheritance into them. Just when you thought that you've seen every possible way to create JS objects, I'm here to announce that there's yet another: the new Obje

javascript:利用Object.create()方法创建对象

在javascript里面,我们知道有两种常见的创建对象的方法,一种是使用对象直接量: 对象直接量是由若干值/键对组成的映射表,值/键对用逗号”,“分隔开,整个部分用花括号”{}“括起来. 例如: var empty={}; var people = { name:'kobe', age:'34' }; 另外一种方法是通过new创建对象:在new后面使用一个函数调用,这个函数也成为构造函数,通过new来初始化一个新的对象. 例如: var arr = new Array(); var date

firefox-Developer开发者站点——关于Object.create()新方法的介绍

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/create Object.create() 方法创建一个拥有指定原型和若干个指定属性的对象. 语法 Object.create(proto, [ propertiesObject ]) 参数 proto 一个对象,作为新创建对象的原型. propertiesObject 可选.该参数对象是一组属性与值,该对象的属性名称将

Object.create()和new object()和{}的区别

Object.create()介绍Object.create(null) 创建的对象是一个空对象,在该对象上没有继承 Object.prototype 原型链上的属性或者方法,例如:toString(), hasOwnProperty()等方法 Object.create()方法接受两个参数:Object.create(obj,propertiesObject) ; obj:一个对象,应该是新创建的对象的原型. propertiesObject:可选.该参数对象是一组属性与值,该对象的属性名称将

Object.create 方法

Object.create(proto[, propertiesObject])The Object.create() method creates a new object with the specified prototype object and properties.第1个参数是该对象的 prototype, 第2个参数和 Object.defineProperties 第2个参数类似 var o; // create an object with null as prototype