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

在javascript里面,我们知道有两种常见的创建对象的方法,一种是使用对象直接量:

对象直接量是由若干值/键对组成的映射表,值/键对用逗号”,“分隔开,整个部分用花括号”{}“括起来。

例如:

var empty={};
var people = {
  name:‘kobe‘,
  age:‘34‘
};  

另外一种方法是通过new创建对象:在new后面使用一个函数调用,这个函数也成为构造函数,通过new来初始化一个新的对象。

例如:

var arr = new Array();
var date = new Date();
var obj = new Object();  

其实javascript在ECMAScript5中还定义了一个方法来创建一个对象,Object.create(),参数可以是某个对象。

例如:

var o = Object.create({x:1});  

那么新创建的对象o的原型就是Object.create()中传入的参数,同时对象o也拥有了属性x。

当然也可以创造一个普通的控对象,类似于var o = {}的效果,只需要在将参数改为Object.prototype即可,让create出来的对象的原型=Object.prototype,其实也就是Object的实例了。

1 var o1 = Object.create(Object.prototype);
2 var o2 = new Object;
3 var o3 = {};  

从上图可以看到,这三种方法创建的对象是一样的,即一个最普通的Object对象。

此外,还可以通过传入参数null来创建一个没有原型的新对象,这个功能是前两种方法所不具备的。

var o4 = Object.create(null);  

这个新建的对象很可怜,他没有任何的原型,也就是说它连Object内置的方法都没有,不能toString(),valueOf等等。

【转载】http://blog.csdn.net/hutaoer06051/article/details/7983316

时间: 2024-10-11 18:11:24

javascript:利用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 方法

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

JavaScript使用Object.defineProperty方法实现双数据绑定

Object.defineProperty这个方法非常值得学习,很多mvc框架中的双向数据绑定就是通过它来实现的. 本着互联网分享精神,今天我就将我自己的见解分享给大家,希望能有所帮助. 开始使用 Object.defineProperty接收三个参数 *  目标对象 *  需要要定义的属性名或方法的名字 *  目标属性所拥有的特性 - descriptor (之后讲解下面案例不包括) 代码实例 var User = {}; Object.defineProperty(User, 'info',

Object.create()方法的低版本兼容问题

Object.prototype.create = function(obj) { if(Object.prototype.create){ return Object.prototype.create //特性检测,判断浏览器是否兼容 }else{ function F(){ F.prototype = obj; //以传入参数为原型构造对象 return new F(); } } };

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

深入JavaScript对象(Object)与类(class),详细了解类、原型

JavaScript基于原型的对象机制 JavaScript原型上的哪些事 一.JavaScript基于原型的对象机制 JavaScript对象是基于原型的面向对象机制.在一定程度上js基于原型的对象机制依然维持了类的基本特征:抽象.封装.继承.多态.面向类的设计模式:实例化.继承.多态,这些无法直接对应到JavaScript的对象机制.与强类型语言的类相对应的是JavaScript的原型,所以,只能是基于原型来模拟实现类的设计模式. 为了便于理解,这里采用了Function构造函数及对象原型链

使用Object.create()实现继承

一.常见继承方式 我们日常开发中常见的继承方式主要有: 1.默认模式: Child.prototype = new Parent(); 2.借用构造函数: function Child(a, b, c, d) { Parent.apply(this, arguments); } 3.借用和设置原型: function Child(a, b, c, d) { Parent.apply(this, arguments); } Child.prototype = new Parent(); 4.共享原

instanceof,Object.getPrototypeOf(),Object.create(),Object.setPrototypeOf(),Object.prototype.isPrototypeOf(),Object.prototype.__proto__

一.instanceof instanceof运算符返回一个布尔值,表示指定对象是否为某个构造函数的实例 var v = new Vehicle(); v instanceof Vehicle // true instanceof对整个原型链上的对象都有效,因此同一个实例对象,可能会对多个构造函数都返回true var d = new Date(); d instanceof Date // true d instanceof Object // true 利用instanceof运算符,还可以