WEB前端程序开发

js里面函数的三种角色

2019-07-07  本文已影响0人  独立行走的蚂蚁

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
 
上一篇下一篇

猜你喜欢

热点阅读