一、通过构造函数创建函数

  • 函数也是一个对象,而且是具有功能的对象
  • 创建函数对象:var fun=new Function();
  • 创建函数:var fun=new Function(‘console.log(“123”)’);
  • 函数也可以添加属性:fun.hello=“hello”
//创建函数对象
var fun=new Function();
console.log(typeof fun); //function//给函数添加函数体
var fun1=new Function('console.log('函数体')');
fun1(); //函数体//给函数添加属性
var fun2=new Function();
fun2.hello="hello";
console.log(fun2.hello); //hello

二、函数声明

  • 语法:function 函数名([形参1,形参2…]){函数体}
  • 调用该函数时解析器不会检查实参的类型
  • 调用该函数时解析器不会检查实参的数量
//不会检查实参的类型
function fun1(a,b){console.log(a+b);
}
fun1(123,undefined); //NaN//不会检查实参的数量
function fun1(a,b){console.log(a+b);
}
fun1(123,undefined,123,null,"321"); //NaN

三、函数的形参和返回值可以是任何类型的数据

  • 任何类型的数据:String Number Boolean null undefined object function
  • 区分函数名,函数名()区别
//形参为function
function sum(a,b){console.log(a+b);
}
function fun1(a){a(1,2); //执行函数
}
fun1(sum); //3//返回值为function
function fun1(){function fun2(a){console.log(a+2);}return fun2;
}
var fun=fun1();
fun(1); //3
//上面两个式子可以等价于 fun1()();//函数名,函数名()区别
var fun=function(){return 1;
}
fun(); //是调用函数
fun; //函数对象

四、立即执行函数

  • 语法:(函数)();
  • 只执行一次
(function(){console.log("立即执行");
})(); //立即执行

五、函数与方法

  • 函数是全局下的,方法是定义在对象下的
//函数
Number('123');//方法
var obj={name:"小明"//对象obj的方法sayName:functtion(){console.log(this.name);}
}

六、this的指向基础问题

  • 解析器在调用函数时每次都会向函数内部传递一个隐含的参数(上下文对象)
  • 根据函数的调用方式的不同,this会指向不同的对象
  • 以函数的形式调用时,this永远指向window对象
  • 以方法的形式调用时,this是指向调用方法的那个对象
//隐含参数this
function fun(){console.log(this);
}
fun(); //window//this会指向不同的对象
var name="全局下的变量(this指向window)"
function fun(){console.log(this.name);//this根据传递的对象获取对应的值}
var obj1={name:"指向调用者obj1",sayThis:fun
};
var obj2={name:"指向调用者obj2",sayThis:fun
};
obj1.sayThis(); //指向调用者obj1
obj2.sayThis(); //指向调用者obj2
fun(); //全局下的变量(this指向window) 等价于window.fun();

欢迎访问我的个人博客

Javascript基础知识笔记三相关推荐

  1. Jquery源码中的Javascript基础知识(三)

    这篇主要说一下在源码中jquery对象是怎样设计实现的,下面是相关代码的简化版本: 1 (function( window, undefined ) { 2 // code 定义变量 3 jQuery ...

  2. JavaScript基础知识笔记

    基础语法 /* 多行注释 JS注释 多行注释,注释中的内容不会被执行,但是可以在源代码中查看 要养成良好的编写注释的习惯,也可以通过注释来对代码进行一些简单的调试 *///单行注释 //alert(& ...

  3. javascript基础知识笔记整理——javaweb笔记

    1.JavaScript 介绍 Javascript 语言诞生主要是完成页面的数据验证.因此它运行在客户端,需要运行浏览器来解析执行 JavaScript 代码. JS是Netscape网景公司的产品 ...

  4. JavaScript基础知识(三个判断、三个循环)

    三个判断 if-else-只会执行其中一个条件 如果if条件中只有一个值,那么会默认转布尔: if(1=="1"){ // 当括号中条件为true时,执行此处的代码 console ...

  5. HTML5学习笔记 —— JavaScript基础知识

    HTML5学习笔记 -- JavaScript基础知识 标签: html5javascriptweb前端 2017-05-11 21:51 883人阅读 评论(0) 收藏 举报 分类: JavaScr ...

  6. JS学习笔记二——JavaScript 基础知识

    JavaScript 基础知识 一.JavaScript 变量 二.JavaScript 的输出 三.JavaScript 运算符 四.结语 一.JavaScript 变量 变量是指在程序运行过程中, ...

  7. access2013数据库实验笔记_医学科研实验基础知识笔记(十):甲基化

    往期回顾 医学科研实验基础知识笔记(一):细胞增殖 医学科研实验基础知识笔记(二):细胞凋亡检测 医学科研实验基础知识笔记(三):细胞周期检测 医学科研实验基础知识笔记(四):细胞自噬研究策略 医学科 ...

  8. JavaScript 基础知识 - DOM篇(二)

    7. 节点操作 7.1 节点的属性 节点分类: 标签节点 文本节点 属性节点 注释节点 节点常用的属性: nodeType:节点的类型 nodeName:节点名称 nodeValue:节点值 常见的节 ...

  9. javaweb(02) JavaScript基础知识

    javaweb(02): JavaScript基础知识 JavaScript简介 为什么出现JavaScript Javascript是什么 JavaScript和Java的关系? 就像卡巴斯基和巴基 ...

  10. Javascript基础知识之四(常用数组方法)

    一.MDN链接 Array - JavaScript | MDNJavaScript的 Array 对象是用于构造数组的全局对象,数组是类似于列表的高阶对象.https://developer.moz ...

最新文章

  1. Visual Transformers: Token-based Image Representation and Processing for Computer Vision
  2. python与excel做数据可视化-用Python进行数据可视化的10种方法
  3. [LeetCode]Add Binary
  4. keras从入门到放弃(二十一)LSTM处理 RNN文本分类
  5. step5 . day2 网络编程 基于TPC协议的网络编程流程及API
  6. 安装版win7安装时分区
  7. Python之路第二天
  8. firefox与IECss的区别
  9. paip.提升用户体验---防止windows假死之CPU 100%解决
  10. 哈工大计算机系统大作业 程序人生-Hello’s P2P From Program to Process
  11. 科学院计算机研究所谢教授,谢维波
  12. VS下使用LoadLibrary加载dll失败
  13. 父页面js监听iframe内子页面并作出响应
  14. C语言程序设计第一到五章思维导图总结
  15. 数仓01-概念的理解和方法论
  16. 密码学之RSA与AES加密解密在项目中的应用
  17. CCNP路由实验之五 动态路由协议之 OSPF
  18. 怎样退出计算机安全模式,如何退出?进入安全模式之后如何安全的退出啊 – 手机爱问...
  19. WebSocket区分不同客户端方法
  20. ##求助!Python编程从入门到实践 外星人飞船问题

热门文章

  1. 给云服务器上传文件,如何给云服务器上传文件
  2. vue项目打包部署到Tomcat上,一刷新就报错404
  3. 约数定理和分解质因数
  4. android inject so,android hook 框架 libinject 如何实现so注入
  5. python变量定义模糊_刚接触python,对变量还有点模糊,下面的代码帮忙看下
  6. php mysql update 不成功也不提示_php与MySQL(基本操作)
  7. cgblib 代理接口原理_一文搞懂Java中静态代理、动态代理以及CGLIB代理
  8. sql server哪个版本比较好用_给视频加音乐的软件哪个比较好用?
  9. mysql常见排错_mysql 一些排错技巧
  10. python 释放内存_python深入之python内存管理机制(重点)