V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
pertersonvv
V2EX  ›  JavaScript

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

  •  1
     
  •   pertersonvv · 2015-01-02 12:56:01 +08:00 · 3813 次点击
    这是一个创建于 3404 天前的主题,其中的信息可能已经有所发展或是发生改变。


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

    kevinkim
        1
    kevinkim  
       2015-01-02 13:12:47 +08:00
    typeof console == 'object'
    pertersonvv
        2
    pertersonvv  
    OP
       2015-01-02 13:31:53 +08:00
    @kevinkim

    为何console.info函数无法扩展,看下图
    http://img.itc.cn/photo/j3UNf3NJfy1
    SoloCompany
        3
    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
        4
    kevinkim  
       2015-01-02 14:47:21 +08:00
    @pertersonvv

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

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

    而如果是后者,可采用@SoloCompany的方法实现,或者你直接console.test = function(){};也可以~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1736 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:40 · PVG 00:40 · LAX 09:40 · JFK 12:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.