美文网首页
函数的三种角色

函数的三种角色

作者: 空压机百科 | 来源:发表于2019-12-10 22:57 被阅读0次

函数本身有自己的属性:
1、length:0 形参的个数
2、name:Fn 函数名
3、prototype:类的原型,在原型上定义的方法是当前 Fn 这个类实例的公有方法
4、__proto__:把函数当作一个普通对象,指向 Function 这个类的原型

一个函数存在多面性:
1、“普通函数”:它本身就是一个普通函数,执行的时候会形成私有作用域(闭包),形参赋值,预解释,代码执行,执行完成后栈内存销毁 / 不销毁
2、“类”:它有自己的实例,也有一个 prototype 属性是自己的原型,它的实例都可以指向自己的原型
3、“普通对象”:和 var obj = {} 中的 obj 一样,就是一个普通对象,它作为对象可以有一些自己的私有属性,也可以通过__proto__找到 Function.prototype
但这三者没有必然关系,如下案例:

function Fn(){
   var num = 10;
   this.x = 100;
}
Fn.prototype.getX = function(){
    console.log(this.x)
}
Fn.aaa = 1000
var f = new Fn  // Fn中的this是f
f.num = undefined 
f.aaa = undefined
var resulet = Fn()  // Fn中的this值window
resulet = undefined
Fn.aaa = 1000

内存图:

function Fn(){
   this.n = 100;
}
Fn.prototype.getN = function(){
    console.log(this.n);
}
Fn.AA = 200;
var f =   new Fn
原型图

Function.prototype是函数数据类型的值,但是相关操作和之前的一摸一样。

相关文章

  • 函数三种角色

    prototype 与 proto的区别 函数a本身就是一个普通的函数,执行的时候形成私有的作用域(闭包),形参赋...

  • 函数的三种角色

    函数本身也会有一些自己的属性:-> length: 形参的个数-> name: 函数名-> prototype: ...

  • 函数的三种角色

    函数本身有自己的属性:1、length:0 形参的个数2、name:Fn 函数名3、prototype:类的原型,...

  • JavaScript中的call、apply、bind深入理解

    一、函数的三种角色 首先要先了解在函数本身会有一些自己的属性,比如: length:形参的个数; name:函数名...

  • js里面函数的三种角色

    1、函数本身也有一些自己的属性// length: 行参的个数// name: 函数名// prototype: ...

  • JavaScript函数定义和方法介绍

    一.函数定义三种方法 函数的三种定义方法分别是:函数声明、函数表达式和Function()构造函数的方法。下面依次...

  • 老师的三种角色

    一个优秀的老师必须要同时能够扮演好三种角色,同时能够在这三种角色中随心所欲的自由切换,自如地穿梭于三种角色之间而没...

  • js笔记三十七之函数的三种角色

    函数本身也会有一些自己的属性:length: 0 形参的个数name: "Fn" 函数名prototype 类的原...

  • operator-()

    负号重载成员函数友元函数负号重载函数三种方式都可

  • Canal部署各角色如何协作

    Canal中的角色 Canal中包含三种角色,分别是: Canal server,通过canal-deployer...

网友评论

      本文标题:函数的三种角色

      本文链接:https://www.haomeiwen.com/subject/ostwgctx.html