【发布时间】:2018-11-03 12:47:51
【问题描述】:
var obj = new XMLHttpRequest();
console.log("Object.keys():",Object.keys(obj));
console.log("Object.getOwnPropertyNames():",Object.getOwnPropertyNames(obj))
console.log("Object.entries():",Object.entries(obj))
console.log("JSON.stringify():",JSON.stringify(obj))
console.log("console.log:"); console.log(obj)
输出:
Object.keys(): []
Object.getOwnPropertyNames(): []
Object.entries(): []
JSON.stringify(): {}
控制台日志:
XMLHttpRequest {onreadystatechange: null, readyState: 0, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, ...}
如何在 javascript 中创建这样一个对象,其属性仅使用console.log(obj) 打印,但不由上述任何函数返回?
我已经尝试使用constructor function、object.create()(和enumerable:false)、Object.assign()、使用getters、从类实例化、从扩展类实例化等创建对象
【问题讨论】:
-
嗨@Marinos 请检查this fiddle。这就是你想要的吗?
-
嗨@JaydeepMor。没有。
-
最接近的是继承的 getter,即
Object.create({get test() { return 1; }})。但是不,XHR 是一个宿主对象,控制台可以随心所欲地使用它。 -
@Bergi 确实主机对象正在接受浏览器的特殊处理,但是可以使用 chrome 对象自定义格式化程序复制这种处理
标签: javascript ecmascript-6 xmlhttprequest prototype prototypal-inheritance