首页 >web前端 >js教程 >JavaScript 中的 new 关键字如何创建对象并实现继承?

JavaScript 中的 new 关键字如何创建对象并实现继承?

Linda Hamilton
Linda Hamilton原创
2024-12-24 12:24:11996浏览

How Does the `new` Keyword Work in JavaScript to Create Objects and Implement Inheritance?

探索 JavaScript 中的“new”关键字

理解“new”关键字

在 JavaScript 中,“new”关键字在对象创建和继承概念中起着关键作用。尽管 JavaScript 被誉为非面向对象语言,但它通过“new”关键字引入了一种独特的基于对象编程方法。

“new”关键字的用途

“new”关键字有几个关键职责:

  1. 对象创建: 启动新对象的创建。
  2. 原型设置: 将新创建对象的内部 [[prototype]] 属性设置为构造函数的外部原型对象。
  3. 'this' 参考:它将 'this' 变量分配给新创建的变量object.
  4. 构造函数调用:以新创建的对象为上下文触发构造函数的执行。
  5. 对象返回:它返回新创建的对象,除非构造函数返回非空对象参考。

理解 [[prototype]] 和 'prototype' 属性

  • [[prototype]] 属性:这个内部属性对于每个对象都是唯一的,并存储对该对象原型的引用。它不能直接修改,但可以使用 Object.getPrototypeOf() 访问。
  • 'prototype' 属性: 这是函数对象独有的可访问属性。它允许访问原型对象,该对象将由使用该函数作为构造函数创建的所有实例共享。

使用“new”创建对象的示例

function ObjMaker() { this.a = 'first'; }
// 'ObjMaker' is the constructor function

ObjMaker.prototype.b = 'second';
// 'ObjMaker.prototype' is the prototype object

obj1 = new ObjMaker();
// 'new' creates a new 'obj1' object, assigns the prototype, and executes 'ObjMaker'

obj1.a; // 'first'
obj1.b; // 'second'
// 'obj1' inherits 'b' from 'ObjMaker.prototype' while still accessing its own property 'a'

继承层次结构'new'

通过 'new' 关键字,JavaScript 允许基于原型的继承模型。通过设置 [[prototype]] 属性,对象可以从其构造函数的原型继承属性和方法。这使得能够创建扩展现有类的子类,如下所示:

function SubObjMaker() {}
SubObjMaker.prototype = new ObjMaker(); // deprecated, use Object.create() now

SubObjMaker.prototype.c = 'third';
obj2 = new SubObjMaker();

obj2.c; // 'third'
obj2.b; // 'second'
obj2.a; // 'first'
// 'obj2' inherits 'c' from 'SubObjMaker.prototype', 'b' from 'ObjMaker.prototype', and 'a' from 'ObjMaker'

总之,JavaScript 中的 'new' 关键字不仅有助于对象创建,而且还支持模拟基于类的灵活继承机制编程。

以上是JavaScript 中的 new 关键字如何创建对象并实现继承?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn