JavaScript中的函数和构造函数之间有什么区别?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript中的函数和构造函数之间有什么区别?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1687字,纯文字阅读大概需要3分钟。
内容图文
在this博客作者说下面的函数是一个构造函数:
function Cat(name, color) {
this.name = name;
this.color = color;
}
Cat.prototype.age = 0;
var catC = new Cat("Fluffy", "White");
Cat函数的实例具有名称和颜色属性.这是普通函数和构造函数之间的唯一区别吗?
解决方法:
构造函数是正常函数.
这里有什么区别的是使用new运算符,它使函数中的上下文(this)成为新实例,从而让它获取两个属性,并返回这个新实例.
如果没有new运算符,则上下文将是外部运算符(如果代码在松散模式下处于全局作用域,则为窗口,如果处于严格模式,则为undefined).
也就是说,如果省略新的
var catC = Cat("Fluffy", "White");
函数“有效”(如果你没有处于严格模式),但你有两个不同的结果:
> catC未定义,因为您的函数不返回任何内容
>名称和颜色现在是外部范围的属性
因此,整个魔术是在the new operator:
When the code new foo(…) is executed, the following things happen:
A new object is created, inheriting from foo.prototype.
The
constructor function foo is called with the specified arguments and
this bound to the newly created object. new foo is equivalent to new
foo(), i.e. if no argument list is specified, foo is called without
arguments.The object returned by the constructor function becomes the
result of the whole new expression. If the constructor function
doesn’t explicitly return an object, the object created in step 1 is
used instead. (Normally constructors don’t return a value, but they
can choose to do so if they want to override the normal object
creation process.)
当我说这是一个正常的函数我时,我省略了一件事:开发人员的意图.您通常将函数定义为被称为构造函数(即使用new)或不作为构造函数.在第一种情况下,您最常使用参数来初始化实例的字段(使用this.name = …),然后您经常在原型中添加函数(就像您一样),以便它们可用于所有实例.为了明确您的意图,通常以大写字母命名构造函数.
内容总结
以上是互联网集市为您收集整理的JavaScript中的函数和构造函数之间有什么区别?全部内容,希望文章能够帮你解决JavaScript中的函数和构造函数之间有什么区别?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。