【JavaScript27】关于Function

发布时间 2023-08-08 21:50:56作者: Tony_xiao

js中所有的函数都是通过Function构建的.

  • 在没有修改过原型链的情况下. 以下等式是成立的.
  • console.log(fn.proto.constructor === Function.prototype.constructor);
  • console.log(fn.proto.constructor === Function);
var fn = new Function("console.log(123456);"); // Function是用来构建函数的.
console.log(fn);
fn();

// // 在没有修改过原型链的情况下. 以下等式是成立的.
// console.log(fn.__proto__.constructor === Function.prototype.constructor);
// console.log(fn.__proto__.constructor === Function);

Function

// 1. 所有的对象都有一个__proto__属性.
// 2. 万事万物皆为对象.
// 3. 通过打印, 发现函数也有__proto__

// function fn(){}
// console.log(fn.__proto__); // 特殊的是, 函数的原型对象: ƒ () { [native code] } js的原生函数"通过toString特殊打印的"

// ƒ Function() { [native code] }
// `函数对象`的`原型对象`上面的`constructor` => 构建该`函数对象`的函数
console.log(fn.__proto__.constructor); // 所有的对象的原型对象中, 一定有constructor

function Person(){}
var p1 = new Person();
// `对象`的`原型对象`里面的constructor => 构建该对象的那个函数
console.log(p1.__proto__.constructor); // Person

完整原型链