js学习总结----函数的三种角色

注意:Function.prototype是函数数据类型的值,但是相关操作和之前的一模一样->Empty/anonymous

函数本身也会有一些自己的属性:

  length :形参的个数

  name:"Fn" 函数名

  prototype 类的原型,在原型上定义的方法都是当前Fn这个类实例的公有方法

  __proto__ 把函数当做一个普通的对象,指向Function这个类的原型

函数在整个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;
        f.num //undefined
        f.aaa//undefined
        var res = Fn();
        res//undefined
        Fn.aaa//1000
时间: 2024-10-11 16:00:53

js学习总结----函数的三种角色的相关文章

【设计模式+原型理解】第四章:函数的三种角色+原型链终结版

一.函数的三种角色 1)作为普通函数 2)作为对象 3)作为类 ps:可以同时存在,之间没有任何冲突 二.怎么理解函数的三种角色 这三种角色可以同时存在,没有任何冲突,举个例子 // 这三种角色是没有冲突的,看下面的例子 function Fn1() { // 这时候,Fn就是一个普通函数,形参赋值,预解释,代码执行 var num = 500 this.x = 100; } Fn.prototype.getX = function () { console.log(this.x); }; Fn

js中回调函数的三种写法

回调函数的三种写法: 1.通过指针来调用 2.通过匿名函数来调用 3.定义与执行同时进行 // 通过指针来调用 function math(num1,num2,callback){ return callback(num1 , num2); } function aa(num1,num2){ return num1 + num2; } function bb(num1,num2){ return num1 - num2; } console.log( math(2,1,aa) ); // 3 c

函数的三种角色

函数在整个JavaScript中是最复杂也是最重要的知识:1.一个函数存在了多面性: 它本身就是一个普通的函数,执行的时候形成私有的作用域(闭包),形参赋值,预解释,代码执行,执行完成后栈内存销毁/不销毁 2.它本身可以作为一个类:它有自己的实例,也有一个叫做prototype属性是自己的原型,它的实例都可以指向自己的原型 3.普通对象:和var obj ={}一样就是一个普通的对象,它作为对象可以有一些自己的私有的属性,也可以通过_proto_找到 Function.prototype //这

js中创建函数的三种方式及区别

1.函数声明 function sum1(n1,n2){ return n1+n2; }; 2.函数表达式,又叫函数字面量 var sum2=function(n1,n2){ return n1+n2; }; 两者的区别:解析器会先读取函数声明,并使其在执行任何代码之前可以访问:而函数表达式则必须等到解析器执行到它所在的代码行才会真正被解释执行. 自执行函数严格来说也叫函数表达式,它主要用于创建一个新的作用域,在此作用域内声明的变量,不会和其它作用域内的变量冲突或混淆,大多是以匿名函数方式存在,

【JS】Js中函数的三种调用方式

在同一个页面中,函数名必须是唯一的,并且区分大小写.Js中可以通过下面三种方式调用函数: 1. 函数的简单调用 2. 在事件的响应中调用函数 3. 通过连接调用函数 具体是怎么操作的呢,下面一一讲解: 函数的简单调用:函数的定义语句通畅被放在HTML文件的<head>内,而函数的调用语句通常被放在<body>中.如果函数定义之前调用函数,执行将会出错. 语法如下: <head> <script type="text/javascript">

Js函数的三种创建、四种调用

1 // 函数的三种创建方法 2 function one(){ // 函数声明,不属于任何对象,始终默认为全局对象 3 console.log("第一个函数") 4 //默认有一个return this,返回函数中的内容 5 } 6 one(); //必须调用:可以在函数声明前调用(预处理变异机制) 7 8 var fn=function(){ //函数表达式 9 console.log("第二个函数") 10 } 11 fn(); //必须先声明再调用 12 1

JS弹出对话框的三种实现方式的意义

最近开始学习JavaScript,最开始讲的就是alert().confirm()和prompt()三种JS弹出对话框.三种弹出对话框分别是警告.确认和提示消息. 第一种警告消息框 (alert)     alert 方法有一个参数,即希望对用户显示的文本字符串.该字符串不是 HTML 格式.该消息框提供了一个"确定"按钮让用户关闭该消息框,并且该消息框是模式对话框,也就是说,用户必须先关闭该消息框然后才能继续进行操作. <script> alert("Hello

js+jquery+html实现在三种不通的情况下,点击图片放大的效果

js+jquery+html实现在三种不通的情况下,点击图片放大的效果. 三种情况分别是:图片的父元素宽高固定;  图片的宽高固定;  图片的父元素宽固定,高度不固定 第一种情况:图片的父元素宽高固定: 1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title>Title</title> 7

epoll函数及三种I/O复用函数的对比

epoll函数 #include <sys/epoll.h>int epoll_create(int size)int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)int epoll_wait(int epfd,struct epoll_event * events,int maxevents,int timeout) Linux I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数