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

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

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

函数

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

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

console.log(Animal);

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

result-1.png

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


console.log()打印函数和对象的原理_第1张图片
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()

你可能感兴趣的:(console.log()打印函数和对象的原理)