js 高程中提到的,除了寄生构造函数在创建对象的时候需要 new 之外没有区别,那么这两种模式不同之处到底是什么,为什么一个需要 new 一个不需要 new。
另外还有一个经典的问题,子面量声明和 new 实例化的不同之处,有很多地方用了这一句话:“ new 关键字在内存开辟一个存储地址,比较耗资源,耗内存。字面量方式直接在内存中开辟一个存储字段,相对简单。”这句话怎么理解呢?为什么一个说存储地址,一个说存储字段?
1
MinonHeart 2018-03-15 09:59:02 +08:00 via iPhone 1
new 不 new 就是区别了。new 了它是作 class 用,不 new 它是作函数用。区别当然是有没有自己的原型链了
记得以前看到的是两种用法内部实现不同,没听过耗资源一说,具体跟 js 引擎的实现有关。耗内存?!神特码耗内存。写字面量主要是短,方便 |
2
BlockBlockBlock 2018-03-15 10:09:25 +08:00 1
嗯……如果我告诉你
const a = {} // ← 这里就是 new 了一个 Object 对象,你会怎么想? 所以根本不存在所谓的 new 或者不 new 的问题,因为无论如何你只要创造一个新对象那么必然会 new,区别只是显式还是隐式的问题。 至于 “ new 开辟一个存储地址,耗资源好内存”……这是说的 c 艹 ,跟 js 没关系。 |
3
chenalex 2018-03-15 13:21:40 +08:00 1
同楼上,字面量写法只是 new 的语法糖写法
|
4
vevlins OP @MinonHeart 我自己在浏览器环境下测试,得到的都是相同的实例化的对象。 这个自己的原型链是什么意思呢?
|
5
MinonHeart 2018-03-15 16:29:09 +08:00 1
|