javascript - 为什么new字符可以用在function类型的实例前面,而不能用在object类型实例前面?
本文介绍了javascript - 为什么new字符可以用在function类型的实例前面,而不能用在object类型实例前面?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
Function a() {
}
var b = new a();
a是Function的一个实例,可以用new字符创建一个a函数的实例b。
var obj = new Object();
var obj1 = new obj();
报错。
为什么可以创建function类型实例的实例,而不能创建object类型实例的实例?
解决方案
在 OOP 理论中,有类和实例两个很重要的概念,一个是抽象概念,一个是实体概念。new
运算符就是从抽象概念的定义中得到实体。比如说,人 是一个抽象概念,表示了一个物钟,而小明是一个具体的人,也就是实体。当然这个实例也可以不叫小明,可以叫李明,这里实体始终是同一个,但是可以用不同的 变量 来引用。
如果你的 OOP 的思想不是很了解,可以去百度,多看看别人咋个说的
JS 中没有类的概念,但是为了模拟类,允许将任意函数当作构建函数使用,通过 new
运算符来产生实例。所以可以 new Func()
来产生对象(实例)。
但是对象已经是实例了,你需要从它得到另一个实例,不是用 new
,而是应该 clone。对于 clone,涉及到深拷贝浅拷贝的问题,具体你也可以去找度娘。
这篇关于javascript - 为什么new字符可以用在function类型的实例前面,而不能用在object类型实例前面?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文