js基础知识总结:函数
函数内部的属性:
arguments 和this是函数内部的两个特殊对象
arguments:
function recursion(num){
if(num<=1){
return 1;
}else{
return num*recursion(num-1);
}
}
另一种写法:
function recursion(num){
if(num<=1){
return 1;
}else{
return num*arguments.callee(num-1);
}
}
arguments:表示当前参数的数组
arguments.callee 表示引用当前正在正在执行的函数,或者说是调用arguments.callee的函数
的引用,arguments.callee给匿名函数提供了一种自我引用的方式
var func=function(){
alert(func===arguments.callee);
}
func();//调用该函数,我们得出的结果是true
从该例子我们可以看出func和arguments.callee对象的类型和值都相等。 callee属性的初始值就是正在执行的Function对象 caller:
返回一个对函数的引用,该函数调用了当前函数 this 对象:
this对象引用的是window(windwo是一个对象,而且是js当中最大的一个对象
,并且它是最外围的对象)
alert(window);//[object window]
alert(typeof window);//object window 是对象 类型是对象 表示全局 alert(this); // [object Window] this 目前表示的是window,因为在window的范围下
alert(typeof this);//object alert(this===window);//返回值为 true
在“全局”变量下的this 就是window window.color='红色的'; function sayColor(){
//alert(this);// [object window]
alert(this.color);//因为该函数 sayColor() 未赋值给一个对象 所以此处的this依然代表着window对象
}
sayColor();// 调用的是window下的color var box={
color:'蓝色的'
};
box.sayColor=sayColor;将sayColor函数赋值给了 box对象的sayColor属性
/*
上边的代码其实就相当于
var box={
color:'蓝色的',
sayColor:function(){
//alert(this);// [object Object]
alert(this.color);
}
};
*/
box.sayColor();//此处执行的是box里边的this.color
//结果是 蓝色的 --------------------------------------------
<script type="text/javascript">
function box(num1,num2){
return num1+num2;
}
//可以使用这种方式将sum函数转换成 box方法
function sum(num1,num2){
return box.apply(this,[num1,num2]);//此处的this指的是window对象(将this换成window也是一样的),数组表示的是传递的参数
}
alert(sum(19,21));//返回的结果是40 ->函数apply:
语法:apply[[thisObj],[argArray]]
定义:应用某一个对象的一个方法,用一个对象替换当前对象
thisObj代表某一个对象 上述例子中这个对象是当前对象 this
argArray表示用来替换当前对象的的对象的参数 数组 上述例子的另一个中写法
function sum2(num1,num2){
return box.apply(this,arguments);//arguments代表的是box函数中参数的数组
}
alert(sum2(10,10)); ->使用apply和call可以冒充另一个方法
apply与call实现的效果是一样的
call和apply不同的是 call中的参数是一个一个的,而apply则必须以数组的形式传递
function sum(num1,num2){
return box.call(this,num1,num2);//注意参数的传递方式和apply的不同之处
}
alert(sum(10,10)); 冒充的作用:主要用于扩展函数赖以运行的作用域 /*
var color='红色'; var box={
color:'蓝色'
};
function sayColor(){
alert(this.color);
}
//使用call 冒充 window对象
sayColor.call(window);//红色 弹出的是window对象的 color
sayColor.call(this);// 红色 弹出的样式window对象的color //使用call 冒充 box对象
sayColor.call(box);//蓝色 弹出的是 box对象下的color属性 */
此时 可以看出 并没有给box对象添加 sayColor属性对象却可以执行出 sayColor的效果
js基础知识总结:函数的更多相关文章
- Node.js基础知识
Node.js入门 Node.js Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始.比较独特的是,Node.js会假设在POSIX环境下运行 ...
- [JS复习] JS 基础知识
项目结尾,空闲时间,又把<JS 基础知识> 这本书过了一遍,温故知新后,很多知其然不知其所以然的内容 豁然开朗. [1. 用于范围的标签] display :inline or bloc ...
- HTML+CSS+JS基础知识
HTML+CSS+JS基础知识 目录 对HTML+CSS+JS的理解 基础知识 对HTML+CSS+JS的理解 基础知识 插入样式表的三种方式 外部样式表:<link rel="sty ...
- 网站开发进阶(十五)JS基础知识充电站
JS基础知识充电站 1.javascript alert弹出对话框时确定和取消两个按钮返回值? 用的不是alert对话框,是confirm confirm(str); 参数str:你要说的话或问题: ...
- NodeJs>------->>第三章:Node.js基础知识
第三章:Node.js基础知识 一:Node.js中的控制台 1:console.log.console.info 方法 console.log(" node app1.js 1> ...
- JS基础知识笔记
2020-04-15 JS基础知识笔记 // new Boolean()传入的值与if判断一样 var test=new Boolean(); console.log(test); // false ...
- JS基础知识总结
js基础知识点总结 如何在一个网站或者一个页面,去书写你的js代码:1.js的分层(功能):jquery(tool) 组件(ui) 应用(app),mvc(backboneJs)2.js的规划() ...
- js基础知识温习:Javascript中如何模拟私有方法
本文涉及的主题虽然很基础,在很多人眼里属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题.这里会涉及到对象属性的封装.原型.构造函数.闭包以及立即执行表达式等知识. 公有方法 公有方法 ...
- js基础知识总结(2016.11.1)
js基础知识点总结 如何在一个网站或者一个页面,去书写你的js代码:1.js的分层(功能):jquery(tool) 组件(ui) 应用(app),mvc(backboneJs)2.js的规划():避 ...
- Js基础知识(一) - 变量
js基础 - 变量 *大家对js一定不会陌生,入门很简单(普通入门),很多人通过网络资源.书籍.课堂等很多途径学习js,但是有些js基础的只是往往被大家遗漏,本章就从js变量类型来说一说js 变量类型 ...
随机推荐
- JQuery 多个checkbox 只选中一个
<form id="common-form"> <input name="check1" type="checkbox"/ ...
- js Map 遍历
1. 在知道的key的情况下遍历map自然就跟数组一样的访. 2.在不知道key的情况下遍历map(此情况更多吧) 2.1 for(var key in Map){ }; //第一种 ...
- 【24.63%】【codefroces 686D】Kay and Snowflake
time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standa ...
- ASP.Net请求小周期
另一篇另篇2 ASP.NET请求处理全过程 一个ASP.NET请求过程中,从浏览器中发出一个Web请求 到 这个请求被响应并显示在浏览器中的过程中究竟会发生哪些不同的事件,当我们进入这个事件之旅时,我 ...
- html head标签的内容跑到body标签中 , 并且body中多了个空格
今天遇到一个奇怪的问题 , 就是在head标签中写的内容跑到body标签中 , 第一种也是经常遇到的情况就是编码 UTF-8 格式带BOM的 , 这种情况是会多一个空格 , 这个基本都知道 , 按ut ...
- git命令评测
近日得知git命令在库进行操作,查找git尽管小命令(当然,也不能太小),但他们是一个非常强大的组合,更重要的是,它是非常的效果不同状态的命令是不一样的打.该博文总结git命令.. Git命令 命令小 ...
- CUDA中的常量内存__constant__
GPU包含数百个数学计算单元,具有强大的处理运算能力,可以强大到计算速率高于输入数据的速率,即充分利用带宽,满负荷向GPU传输数据还不够它计算的.CUDA C除全局内存和共享内存外,还支持常量内存,常 ...
- Coremicro Reconfigurable Embedded Smart Sensor Node
A Coremicro Reconfigurable Embedded Smart Sensor Node has the capability of hosting intelligent algo ...
- sqlplus 上下工具
http://yunpan.cn/QNXXpjP9aBy6v 訪问password 420b 想在Unix.Linux环境下使用sqlplus,像在win以下一样,实现上下翻页. 怎么办呢? 首先要确 ...
- 使用GDI+生成KnownColor列表
原文:使用GDI+生成KnownColor列表 在写这篇"GDI+与WPF中的颜色简析"之前,我试着使用GDI+生成KnownColor列表.现将关键代码贴出来吧. 最终效果图: ...