'new”运算符如何在幕后工作以创建和初始化 JavaScript 中的对象?
Oct 29, 2024 am 03:21 AMnew 运算符如何在 JavaScript 中创建和初始化对象
new 运算符是 JavaScript 中用于创建新对象的强大关键字。它在面向对象编程中起着至关重要的作用,但要完全理解它可能具有挑战性,特别是在原型链方面。
理解新的 Operator
使用时使用带有函数的 new 运算符,内部会发生以下步骤:
- 创建一个新的原生对象。
- 对象的内部 [[Prototype]] 属性设置为函数的原型属性。
- 使用新创建的对象作为其 this 值来调用该函数。
- 如果函数返回原始值,则返回内部创建的对象。
- 否则,如果函数返回一个对象,则内部创建的对象将被放弃。
示例实现
为了演示 new 运算符的功能,这是一个等效的实现:
<code class="javascript">function NEW(f) { let obj, ret, proto; // Check if `f.prototype` is an object proto = f.prototype ? f.prototype : Object.prototype; // Create an object inheriting from `proto` obj = Object.create(proto); // Call the function with `obj` as `this` ret = f.apply(obj, Array.prototype.slice.call(arguments, 1)); // Return the object from the function or the newly created `obj` return Object(ret) === ret ? ret : obj; }</code>
登录后复制
示例用法
考虑这个示例:
<code class="javascript">function Foo(arg) { this.prop = arg; } Foo.prototype.inherited = 'baz'; let obj = NEW(Foo, 'bar'); console.log(obj.prop); // Output: "bar" console.log(obj.inherited); // Output: "baz" console.log(obj instanceof Foo); // Output: true</code>
登录后复制
这演示了 new 运算符如何创建对象继承自函数的原型,并允许访问其属性和方法。
以上是'new”运算符如何在幕后工作以创建和初始化 JavaScript 中的对象?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
击败分裂小说需要多长时间?
3 周前
By DDD
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林
两个点博物馆:所有展览以及在哪里可以找到它们
3 周前
By 尊渡假赌尊渡假赌尊渡假赌

热门文章
击败分裂小说需要多长时间?
3 周前
By DDD
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林
两个点博物馆:所有展览以及在哪里可以找到它们
3 周前
By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)