美文网首页
函数的三个角色:普通函数、类、普通对象

函数的三个角色:普通函数、类、普通对象

作者: gaoqizhuhui | 来源:发表于2017-07-25 20:25 被阅读0次

函数在整个JS中是最复杂也是最重要的

1、一个函数存在了多面性:

”普通函数“:它本身就是一个普通的函数,执行的时候形成私有作用域(闭包),形参赋值,预解释,代码执行,执行完成后桟内存销毁/不销毁
”类“:它有自己的实例,也有一个叫prototype属性是自己的原型,它的实例都可以指向自己的原型
”普通对象":和var obj={ }中的obj一样,就是一个普通的对象,它作为对象可以有一些自己的私有属性,也可以通过______proto__找到Function.prototype

以上这三者之间没有必然关系

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

a、f.num; f.aaa; //--->undefined,undefined
因为var f=new Fn,所以这里的Fn是一个类,f为实例。num和aaa既不是私有属性也不是公有属性,所以不赋给实例f,所以均为undefined

b、var res=Fn(); //Fn中的this是window res=undefined
因为var res=Fn();说明Fn是一个普通函数,按作用域链来看,Fn()前面没有“ . ”,所以this指的是window

c、Fn.aaa;此时Fn是对象

image.png
分析:

Function:函数类,所有的函数都是它的一个实例,所以函数也算是对象数据类型,所以每个函数也具有______proto__属性。(世间万物皆对象)
——————————————————————————————————————————
函数本身也有一些自己的属性:
a、length:形参的个数
b、name:函数名
c、prototype:类的原型,在原型上定义的方法都是当前Fn这个类实例的公有方法
d、______proto__:把函数当作一个普通的对象,指向Function这个类的原型

相关文章

  • 函数的三个角色:普通函数、类、普通对象

    函数在整个JS中是最复杂也是最重要的 1、一个函数存在了多面性: ”普通函数“:它本身就是一个普通的函数,执行的时...

  • 原型和原型链

    我们将对象分为函数对象和普通对象,函数对象的级别要要高于普通对象,可以通过函数对象创建普通对象,但是无法通过普通对...

  • JS基础知识 (二)--原型规则

    构造函数 构造函数其实也是普通的函数,只是可以使用构造函数来实例化对象。事实上,当任意一个普通函数用于创建一类对象...

  • 2018-05-18 原型链

    1:普通对象与函数对象 JavaScript分为普通对象和函数对象,通过new Function创建的对象都是函数...

  • 函数的扩展

    函数的扩展 箭头函数和普通函数区别箭头函数没有this对象,箭头函数的里的this始终指向定义时所在对象,普通函数...

  • 一个例子记住C++对象的生存周期

    代码 代码说明: 类A,含构造函数和析构函数 普通函数fun,函数体里新建了类A的局部自动对象FunObj和局部静...

  • C++11可调用对象包装器和绑定器

    可调用对象 在C++中,可以像函数一样调用的有:普通函数、类的静态成员、仿函数、lambda函数、类的成员函数、可...

  • js原型与原型链

    一. 普通对象与函数对象 JavaScript 中,分为普通对象和函数对象,Object ,Function 是J...

  • 我的JS笔记 -- 类

    JS是没有类的,但JS可以利用构造函数实现近似类的功能。 构造函数 构造函数,是用来创建对象的函数。与普通的函数声...

  • js的原型

    一、普通对象和函数对象 总结:new Function() 创建的对象都是函数对象,其他都是普通对象。 二、构造函...

网友评论

      本文标题:函数的三个角色:普通函数、类、普通对象

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