为何有些 JS 函数没有 prototype 属性?

2015-01-02 12:56:01 +08:00
 pertersonvv


不是说所有函数都有prototype属性的么:(

3966 次点击
所在节点    JavaScript
4 条回复
kevinkim
2015-01-02 13:12:47 +08:00
typeof console == 'object'
pertersonvv
2015-01-02 13:31:53 +08:00
@kevinkim

为何console.info函数无法扩展,看下图
http://img.itc.cn/photo/j3UNf3NJfy1
SoloCompany
2015-01-02 13:57:14 +08:00
> console.__proto__
{ log: [Function],
info: [Function],
warn: [Function],
error: [Function],
dir: [Function],
time: [Function],
timeEnd: [Function],
trace: [Function],
assert: [Function] }

> console.__proto__.test = function() {this.log.apply(this, arguments);}
[Function]

> console.test(123)
123
undefined
kevinkim
2015-01-02 14:47:21 +08:00
@pertersonvv

你的问题是console为什么没有prototype还是想要扩充console?

如果是前者,那么console是个object,所以无prototype属性,但是你可以通过__proto__来查看它的内部原型引用。

而如果是后者,可采用@SoloCompany的方法实现,或者你直接console.test = function(){};也可以~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/158590

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX