javascript - 为什么new字符可以用在function类型的实例前面,而不能用在object类型实例前面?
巴扎黑
巴扎黑 2017-04-11 12:38:42
[JavaScript讨论组]

Function a() {
}
var b = new a();
a是Function的一个实例,可以用new字符创建一个a函数的实例b。

var obj = new Object();
var obj1 = new obj();报错。

为什么可以创建function类型实例的实例,而不能创建object类型实例的实例?

巴扎黑
巴扎黑

全部回复(3)
PHP中文网

在 OOP 理论中,有类和实例两个很重要的概念,一个是抽象概念,一个是实体概念。new 运算符就是从抽象概念的定义中得到实体。比如说,“人” 是一个抽象概念,表示了一个物钟,而“小明”是一个具体的人,也就是实体。当然这个实例也可以不叫“小明”,可以叫“李明”,这里实体始终是同一个,但是可以用不同的 变量 来引用。

如果你的 OOP 的思想不是很了解,可以去百度,多看看别人咋个说的

JS 中没有类的概念,但是为了模拟类,允许将任意函数当作构建函数使用,通过 new 运算符来产生实例。所以可以 new Func() 来产生对象(实例)。

但是对象已经是实例了,你需要从它得到另一个实例,不是用 new,而是应该 clone。对于 clone,涉及到深拷贝浅拷贝的问题,具体你也可以去找度娘。

巴扎黑

楼上答案比较专业. 其实更简单的解释: var obj = new Object();这个obj已经是一个实例化对象了.你直接对一个对象调用构建方法,肯定是错误的呀. 而且你上面的a并不是一个具体的实例化对象.

PHPz

因为js里运算符new语法里要求跟的是构造函数,对象当然报错

https://developer.mozilla.org...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号