JavaScript中Object.create()详解与兼容实现

作者:纸飞机

时间:2026-10-28

浏览:332

本文介绍ECMAScript 5中Object.create()函数的用法,包括指定原型和属性定义。通过示例展示如何创建带原型对象及无原型对象(null)。针对不支持ES5的浏览器,提供了基于Douglas Crockford方法的兼容实现代码,确保旧环境下的对象创建功能。

文章目录

Object.create()基本用法与原型链

在JavaScript中,除了使用字面量语法和new操作符外,ECMAScript 5标准引入了Object.create()方法来创建对象。该方法接收两个参数:第一个参数是必需的,用于指定新对象的原型;第二个参数是可选的,用于定义新对象的属性,例如设置属性的writable(可写)和enumerable(可枚举)特性。

代码如下:

var o = Object.create({x:1, y:7});
console.log(o);//Object {x=1, y:7}
console.log(o.__proto__);//Object {x=1, y:7}

创建无原型对象

如果将null作为第一个参数传递给Object.create(),则会创建一个没有原型的对象。由于该对象没有继承任何Object的基本属性(例如toString()方法),尝试对该对象使用+操作符进行类型转换时会抛出异常。

代码如下:

var o2 = Object.create(null);
console.log("It is " + o2);//Type Error, can't convert o2 to primitive type

ES3环境下的兼容实现

对于仅支持ECMAScript 3标准的浏览器,可以使用Douglas Crockford提出的方法来实现Object.create()的功能。

代码如下:

if (typeof Object.create !== 'function') {
Object.create = function (o) {
function F() {}
F.prototype = o;
return new F();
    };
}
newObject = Object.create(oldObject);

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章