Object.create函数

语法

Object.create(prototype, descriptors)

参数

prototype

  必需。  要用作原型的对象。  可以为 null

descriptors

  可选。  包含一个或多个属性描述符的 JavaScript 对象。

  “数据属性”是可获取且可设置值的属性。  数据属性描述符包含 value 特性,以及 writableenumerable 和 configurable 特性。  如果未指定最后三个特性,则它们默认为 false。  只要检索或设置该值,“访问器属性”就会调用用户提供的函数。  访问器属性描述符包含 set 特性和/或 get 特性。  有关详细信息,请参阅 Object.defineProperty 函数 (JavaScript)

返回值

一个具有指定的内部原型且包含指定的属性(如果有)的新对象。

异常

如果满足下列任一条件,则将引发 TypeError 异常:

prototype 参数不是对象且不为 null。

descriptors 参数中的描述符具有 value 或 writable 特性,并具有 get 或 set 特性。

descriptors 参数中的描述符具有不为函数的 get 或 set 特性。

示例

var newObj = Object.create(null, {
            size: {
                value: "large",
                enumerable: true
            },
            shape: {
                value: "round",
                enumerable: true
            }
        });

console.log(newObj.size + "<br/>");//large
console.log(newObj.shape + "<br/>");//round
console.log(Object.getPrototypeOf(newObj));null

原文地址:https://www.cnblogs.com/haonanya/p/9057256.html

时间: 2024-08-30 13:28:40

Object.create函数的相关文章

用Object.create来创建对象,及其兼容性写法

function inherit(p){ if(p==null){ throw TypeError(); } if(Object.create){ return Object.create(p); } var t=typeof p; if(t!=='object'&&t!=='function'){ throw TypeError(); } function f(){}; f.prototype=p; return new f(); } function range(from,to){ v

Object.create(null)

使用Object.create(null)产生的对象是一个没有原型的对象,相对于直接使用 {} 产生的对象,后者会产生一个原型链接到Object.prototype,前者相当于一个纯净的map不会有Object.prototype的属性或者方法污染,自然前者遍历的时候也不需要使用hasOwnProperty来判断当前属性是否为自有的. Object.create函数的作用就是创建一个对象,并且让对象的原型为函数提供的参数.null作为一个对象,它是Object.prototype的原型,通过下面

前端开发者进阶之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 (继承而来)

[设计模式] JavaScript 之 原型模式 : Object.create 与 prototype

1. Object.create 1>. 定义: 创建一个可指定原型对象的并可以包含可选自定义属性的对象: 2> Object.create(proto [, properties]);  可选,用于配置新对象的属性; 1. proto: 要创建新对象的 原型,必须,可为 null; 这个 proto 要是已经创建的[new过],或 对象.prototype 才有价值; 2. properties: 可选,结构为: { propField: { value: 'val'|{}|function

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 可选.该参数对象是一组属性与值,该对象的属性名称将

javascript Object.create()究竟发生了什么

这是我在博客园的第一篇博客,早上看了一个大牛的博客,关于javascript继承的,对于大牛使用Object.create()实现继承的方式觉得点问题,就自己研究了一下,所以就有了这篇帖子. 本帖只讲Object.create().因为我也才做一年前端,理解不对的,希望大牛们帮忙指正. 在博客开始前先谈下我多 prototype和__proto__的粗浅的认识. 1.prototype 只有类才有这个属性,一般通过函数声明 function xx(){} 和函数表达式 var xx=functi

leaflet开源地图库源码研读(五)——extend、Object.create、fn.bind分析(Util.js文件)

一.extend:扩展对象的属性 1 var Util = { 2 extend: function (dest) { 3 var i, j, len, src; 4 for (j = 1, len = arguments.length; j < len; j++) { 5 src = arguments[j]; 6 for (i in src) { 7 dest[i] = src[i]; 8 } 9 } 10 return dest; 11 } 12 } 可以,看出extend方法里有2个fo