console.log()打印函数和对象的原理

console.log()是我们常用的调试方法,一般用于打印原始值或引用值。

下文只是猜测,若有错误之处,还望指正。

函数

/**
 * 在外部通过点语法添加
 */
var Animal = function () {};

Animal.say = function () {
  console.log("hi");
};

console.log(Animal);

console.log()打印结果为函数的源代码:

result-1.png

console.dir()打印结果为函数的全部内容:


result-2.png
  1. log打印函数时,调用了Function.toString(),即函数形式。

Function对象覆盖了从object继承来的Object.prototype.tostring方法,函数的tosting方法会返回一个表示函数源代码的字符串。具体来说,包括 function关键字,形参列表,大括号,以及函数体中的内容。

toString.png
  1. dir打印函数对象时,打印的是对象形式

将一个JavaScript对象的所有属性和属性值显示成一个可交互的列表。

注意:

在js中函数也是对象,所有通过点语法给函数添加属性或方法,都会以键值对的方式被添加的这个函数中。

对象

var Person = {};
Person.say = function () {
  console.log("hi");
};
console.log(Person);

log结果:

object.png

调用valueOf()结果


valueOf.png

参考

segmentfault conlog()是如何打印函数的
Function.prototype.string()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,399评论 2 17
  • 一、JavaScript基础知识回顾 1.1 JavaScript 1.1.1 javascript是什么? Ja...
    福尔摩鸡阅读 5,327评论 0 7
  • 相关知识点 数据类型、运算、对象、function、继承、闭包、作用域、原型链、事件、RegExp、JSON、Aj...
    sandisen阅读 13,887评论 7 175
  • 今天看到一个上海的博主,想女儿学英语的故事,幼儿园的小孩已经能阅读完全原版的哈利波特。这段时间我也在帮一个同事的...
    不门体验阅读 2,669评论 0 0
  • 转眼间就到了三十岁,生日当天,恰好端午放假,本来想坐下来好好写一篇文章记念一下。怎奈假期难得,人易慵懒,白天散漫地...
    伊洛客阅读 2,555评论 3 3

友情链接更多精彩内容