JavaScript create方法

JavaScript create方法教程

JavaScript 中,Object.create() 方法用于创建一个新 对象,使用现有的对象来提供新创建的对象的 __proto__

JavaScript create详解

语法

Object.create(proto[, propertiesObject]);

参数

参数 描述
proto 新创建对象的原型对象。
propertiesObject 可选。如果没有指定为 undefined,则是要添加到新创建对象的不可枚举(默认)属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。这些属性对应 Object.defineProperties() 的第二个参数。

propertiesObject参数

属性 说明
configurable 表示新创建的对象是否是可配置的,即对象的属性是否可以被删除或修改,默认false
enumerable 对象属性是否可枚举的,即是否可以枚举,默认false
writable 对象是否可写,是否或以为对象添加新属性,默认false
get 对象getter函数,默认undefined
set 对象setter函数,默认undefined

返回值

一个新对象,带着指定的原型对象和属性。

说明

如果 propertiesObject 参数是 null 或非原始包装对象,则抛出一个 TypeError 异常

案例

Object.create创建对象

使用 Object.create 创建对象

<!DOCTYPE html> <html> <head> <title>JavaScript Object.create()</title> <script type="text/javascript"> console.log("嗨客网(www.haicoder.net)"); // Person - 父类(superclass) function Person() { this.name = ""; this.age = 1; } // 父类的方法 Person.prototype.info = function(name, age) { this.name = name; this.age = age; console.info('Person info, name =', this.name, "age =", this.age); }; // Student - 子类(subclass) function Student() { Person.call(this); // call super constructor. } // 子类续承父类 Student.prototype = Object.create(Person.prototype); Student.prototype.constructor = Student; var student = new Student(); console.log('Is student an instance of Student?', student instanceof Student); console.log('Is student an instance of Person?', student instanceof Person); // true student.info("HaiCoder", 109); // Outputs, 'Shape moved.' </script> </head> </html>

程序运行后,控制台输出如下:

04_JavaScript Object create.png

我们首先创建了一个 Person 类,该类有两个 属性,即 name 和 age,同时,我们给 Person 类定义了一个 info 方法,该方法用于设置 Person 类的 name 和 age 属性的值,同时,打印 name 和 age 属性的值。

同时,我们定义了一个 Student 类,我们使用了 Object.create 使 Student 类继承自 Person 类,最后,我们创建了一个 Student 类的实例,我们发现,实例 student 是类 Person 和 Student 的实例。

JavaScript create方法总结

在 JavaScript 中,Object.create() 方法用于创建一个新对象,使用现有的对象来提供新创建的对象的 __proto__