javascript中对象字面量方式创建对象,不会调用Object构造函数吗?
发布于 1 年前 作者 xuanyuan 1287 次浏览 来自 问答

https://segmentfault.com/q/1010000004139227 和链接中问题有相同的疑惑,第一个答案感觉不是很清晰,有没有牛牛给解答一下

不用new构造器和后来加入的__proto__属性等于原型,如何手动获得一个继承对象? 就是不用new和prototype、也不用__proto__,在js里有没有可能用其他代码模拟实现这种继承和统一修改的效果?即手动生成构造器里那个this对象? 如果不调用构造函数的话,那为什么insatnceof 判断字面量形式的对象返回Object呢,instanceof不就是判断是否是一个对象的实例麽?

var o = {};
o instanceof Object; //true
2 回复

字面量形式的对象默认以Object为原型对象(实际上{}就是new Object()) 手动继承

const proto = { a: 123 };
const obj = Object.create(proto);
obj.a; // 123

创建不以Object为原型的对象

const obj = Object.create(null);
obj instanceof Object; // false

详细内容见规范12.2.6.7

@dislido 多谢解答

回到顶部