js里面函数的三种角色

1、函数本身也有一些自己的属性
// length: 行参的个数
// name: 函数名
// prototype: 类的原型,在原型上定义的方法,都是当前Fn这个实例的公有的方法。
// _ proto _ 把函数当做一个普通的对象,指向Function这个类的原型

2.一个函数存在多面性
(1)、"普通函数":本身就是一个普通的函数,执行的时候行成私有的作用域(闭包),进行形参赋值、预解释、代码执行,执行完成后栈内存销毁或者不销毁;
(2)、"类": 它有自己的实例,也有一个叫做prototype的属性是自己的原型,它的实例都可以指向自己的原型;
(3)、"普通对象": 和let obj = {}一样,作为一个普通的对象,作为普通的对象,有一些自己私有的属性,也可以通过 _ proto _找到Function.prototype

// 上面三者之间没有必然的联系
Function.prototype是函数数据类型的值,操作和之前的一模一样

  function Fn () {
    var num = 100;
    this.x = 200;
  }

  let f = new Fn; //Fn里面的this是f
  Fn.aaa = 300;
  f.num // undefined
  f.aaa // undefined 
  let res =   Fn(); // Fn里面的this是window
  res // undefined
  Fn.aaa // 300
 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 10,640评论 0 21
  •   面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意...
    霜天晓阅读 6,428评论 0 6
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,147评论 0 5
  • JS中原型链,说简单也简单。 首先明确: 函数(Function)才有prototype属性,对象(除Object...
    前小白阅读 9,377评论 0 9
  • -----活着就是给自己看------人这一辈子,活的真是不容易。“短的是人生,长的是磨难。 ”张爱玲的这句话道出...
    用心陪伴你阅读 1,475评论 0 0