js中什么是实例化,js中,什么是“实例化”?

希望能详细解释下,最好举个例子~ js中什么是实例化,js中,什么是“实例化”?

在解释实例化之前,我们要理解一个概念,什么叫做类。

类是抽象概念,比如美食,美食是一个抽象概念,我们不知道什么是美食,每个人对美食的定义不同,有些人认为鲍鱼、龙虾是美食,有些人认为一碗酸汤面就是美食。那么美食,就是类,而鲍鱼、龙虾、酸汤面,就是美食实例化之后的答案。

我们在代码中看一下上述过程:

class Food {

constructor(name) {

this.name = name;

}

print() {

console.log(`美食是: ${this.name}`);

}

}

const abalone = new Food('鲍鱼');

abalone.print(); // 美食是: 鲍鱼

上面的过程,就是实例化过程,而 abalone 就是实例化对象。首先我们声明了一个抽象概念,美食类,在美食类的 constructor(构造器,初始化的时候执行)里,我们需要一个字符串来存储美食的名字。

当我们执行 new Food('鲍鱼') 的时候,就把抽象的类进行了“实例化”变成了一个我们认知体系中存在的鲍鱼,这就是实例化。

js中什么是实例化,js中,什么是“实例化”?

JavaScript中,如何才能实例化一个对象?

实例化一个对象,却不用new,为何?在看老外写的源代码时,经常发现他们实例化对象不用new关键字。var date = Date(2016, 3, 20);
上面这句就是一个经典的例子。然后我做了以下的测试date instanceof Date; // false
Object.prototype.toString.call(date); // [object String] 并非Date类型
这个到底是怎么回事? js中什么是实例化,js中,什么是“实例化”?

不是Date一个对象的问题,是js语言的特性。js的对象构造器,实际上是一个函数。用new方式,会创建对象的一个新实例。如果不用new,相当于直接调用函数。构造函数内如果有对this的引用,不会指向新实例本身(也不存在这个新实例),而是会指向调用构造函数时的上下文环境。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxx@163.com 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论