资讯专栏INFORMATION COLUMN

【译】理解JavaScript:new 关键字

陆斌 / 651人阅读

摘要:原理是类的构造函数被调用,并且实例化了新的对象。尽管的语法非常相同,但使用在底层还是会引发不同行为没有构造函数首先,我们并不是必须要用一个类来生成对象。构造函数只不过是在调用时关键字放在其前面的普通方法而已。

由于存在海量的库和工具,以及各种各样简化你开发的玩意儿,很多程序员开始在不深入了解底层的情况下开发应用。JavaScript就是这种现象的代言人。JavaScript作为一种最复杂的且流传最广泛的语言,很多的开发者被高层次库的使用吸引,同时将糟粕抽离。

尽管你在不深入理解的情况下仍可以开发值得称道的应用,但深入JavaScript绝对让你收益。对“怪异部分”的理解可以让高级开发者在芸芸众生中脱颖而出,另外,虽然JS的生态日新月异,但对“怪异部分”的理解依旧是所有其他工具的基础。理解了这些就会拓展你的视野,并且改变你看待开发过程的方式。

在我 之前的文章 中稍微提到过new关键字,它创建了一个对this的绑定。在面向对象语言中,new关键字总是用于实例化一个类。

var dog = new Dog();

原理是类的构造函数被调用,并且实例化了新的对象。尽管JavaScript的语法非常相同,但使用new在底层还是会引发不同行为

没有构造函数

首先,我们并不是必须要用一个类来生成对象。在JavaScript中我们可以用方法(function)就能实现此目标。构造函数只不过是在调用时new关键字放在其前面的普通方法而已。你可以说没有构造函数-只有构造函数调用,因为实际上所有的函数都可以被调用去创建对象。这并不是对象或者类或者任何特殊定义方式的一部分。

这里有几个构造函数调用经历的步骤,但我们只关注现在讨论的事项:

1.一个新对象被创建

2.this被绑定到新对象上面

3.除非函数返回它自己的对象,否则调用将返回已构造的对象

function Person(name) {
    this.name = name
}

var person = new Person("Alex")
console.log(person.name) // Alex
总结

总结一下,这并不是一个难懂的概念。要点就是要始终记得,任何方法(function)都可以像构造函数一样被调用,并且会创建一个this的绑定。

非常感谢阅读,期待你的反馈。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95006.html

相关文章

  • javascript的this关键理解

    摘要:在中,当使用关键字调用函数构造函数时,函数构造函数中也有这个概念,但是它不是惟一的规则,而且常常可以引用来自不同执行上下文的不同对象。因此,我们使用调用函数,可以看到这是对象,并且的属性是正常的。 一直以来,javascript里边的this都是一个很难理解的东西,之前看的最多的就是阮一峰老师关于this的理解: http://www.ruanyifeng.com/blo... htt...

    tainzhi 评论0 收藏0
  • []带你理解 Async/await

    摘要:所以是在一秒后显示的。这个行为不会耗费资源,因为引擎可以同时处理其他任务执行其他脚本,处理事件等。每个回调首先被放入微任务队列然后在当前代码执行完成后被执行。,函数是异步的,但是会立即运行。否则,就返回结果,并赋值。 「async/await」是 promises 的另一种更便捷更流行的写法,同时它也更易于理解和使用。 Async functions 让我们以 async 这个关键字开...

    xiaochao 评论0 收藏0
  • 理解JavaScript:闭包

    摘要:当面试中让我解释一下闭包时我懵逼了。这个解释开始可能有点晦涩,让我们抽丝剥茧摘下闭包的真面目。此文不详述作用域有专门的主题阐述,不过作用域是理解闭包原理的基础。这才是闭包的真正便利之处。闭包使用不当就会很坑。 原文链接 为什么深度学习JavaScript? JavaScript如今是最流行的编程语言之一。它运行在浏览器、服务器、移动设备、桌面应用,也可能包括冰箱。无需我举其他再多不相干...

    岳光 评论0 收藏0
  • []Understanding javascript's 'undefined

    摘要:一个表示编译器检测到一个无效的引用值。在实际情况中,往往是在获取一个未被赋值的引用时被抛出。任何一个函数上下文都有一个被称为活动对象的变量对象。没有找到的话,就会认为引用名没有基础值并抛出的错误。下没有下的属性仅存在于被启动的情况下。 和其他语言相比,javascript中的对于undefined的理解还是有点让人困惑的。特别是试着理解ReferenceErrors错误(x is no...

    galaxy_robot 评论0 收藏0
  • 】this 是什么?JavaScript 对象的内部工作原理

    摘要:关键字会实例化一个新的对象实例,并在执行构造函数时将指向该实例。原文链接译是什么对象的内部工作原理 原文链接:What is this? The Inner Workings of JavaScript Objects (需要梯子) 原文作者:Eric Elliott 译文永久链接:【译】什么是 this?JavaScript 对象的内部工作原理 译者:士心 翻译目的:函数动...

    Hwg 评论0 收藏0

发表评论

0条评论

陆斌

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<