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 变量类型 ...
随机推荐
- ios tableView那些事
iOS开发很重要的一个功能就是tableView,可以说熟练使用tableView是iOS开发必修的课程,网上很多相关介绍,推荐一个博客参考一下: http://blog.csdn.net/lengs ...
- Access control differentiation in trusted computer system
A trusted computer system that offers Linux® compatibility and supports contemporary hardware speeds ...
- 【17.00%】【codeforces 621D】Rat Kwesh and Cheese
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- handsontable前端excel学习笔记
暂时没有好的中文资料,大概找了三遍随便看看,之后重点研究其github 1.Handsontable 学习笔记-Methods 2. Handsontable通用方法 3.handsontable的核 ...
- git版本管理与github
1.下载并安装好git 里面有几个.exe的文件,需要用到的就是git-bash.exe 2.把git和github连接 1.打开github网站,点击最右上角的图标,点击setti ...
- Android中去掉标题的方法总结
方法一:也一般入门的时候经常使用的一种方法在setContentView()方法的前面插入代码: requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标 ...
- this prototype constructor
http://www.cnblogs.com/phpmix/articles/1734031.html
- Boost智能指针-基础知识
简单介绍 内存管理一直是 C++ 一个比較繁琐的问题,而智能指针却能够非常好的解决问题,在初始化时就已经预定了删除.排解了后顾之忧.1998年修订的第一版C++标准仅仅提供了一种智能指针:std::a ...
- kendo ui gird温馨提示(使用本地数据) 一个
加入js引用 <link href="http://cdn.kendostatic.com/2014.2.716/styles/kendo.common.min.css" r ...
- 带农历日历的DatePicker控件!Xamarin控件开发小记
原文:带农历日历的DatePicker控件!Xamarin控件开发小记 闲来无事开发了个日期选择控件,感兴趣的同学前往: https://github.com/MatoApps/Mato.DatePi ...