JS函数的其他属性和方法

---------------caller , apply , call , bind

ECMAScript 5 为函数新增了一个属性caller。

caller中保存着调用当前函数的函数的引用,如果是在全局作用域中调用当前函数,则caller的值为null

function outer(){
	inner();
}

function inner(){
	console.log(inner.caller);
}

outer();

上面的代码执行后会在控制台打印出outer函数的源代码。因为outer函数调用了inner函数,所以inner.caller就指向了outer()  

--------------------------------------------------------------------------------------------------------

每个函数都包含两个属性:length和prototype。

length属性表示函数希望接收的命名参数的个数。prototype属性是个对象,保存着很多方法。

---------------------------------------------------------------------------------------------------------

每个函数都包含两个非继承而来的方法:apply()和call()。这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。

apply

apply()接收两个参数:第一个是在其中运行函数的作用域,第二个是参数数组(可以是Array的实例,也可以是arguments对象)。

function sum(num1, num2){
	return num1 + num2;
}

function applySum1(num1, num2){
	return sum.apply(this, arguments);
}

function applySum2(num1, num2){
	return sum.apply(this, [num1, num2]);
}

console.log(applySum1(4,6));  // 10
console.log(applySum2(4,6)); //10

上面的例子中,applySum1和applySum2在执行时传入了this,此时传入的this就是window对象。

但在严格模式下,未指定环境对象而调用函数,则this值不会转为window,除非把函数添加到某个对象或者调用apply()或call(),否则this值为undefined

call

call()与apply()作用相同,区别就是接收参数的方式不同。

call()的第一个参数是在其中运行函数的作用域(即this),其余参数都是直接传递给函数。

bind

兼容低版本浏览器bind方法的实现:

function bind(fn, context){

  return function(){

    return fn.apply(context, arguments);
  }
}

  

call , apply , bind强大的地方就是可以扩充函数赖以运行的作用域。

每个函数继承的toLocaleString()和toString()方法始终都返回函数的代码,返回代码的格式因浏览器而异。

valueOf()方法同样也只返回函数代码。

时间: 2024-11-05 13:45:47

JS函数的其他属性和方法的相关文章

ASP.NET后台调用前台JS函数的三种常见方法

第一种:使用普通的添加控件中的Attributes属性进行调用 例如,像一般的普通的按钮:Button1.Attributes.Add("onclick","MyFun();"); 此方法只能在Onload中或者类似于onload的初始化过程中添加才有效.并且是先执行脚本函数,同时无法改变执行顺序. 第二种:使用Response.Write方法进行调用 例如,像我们经常会使用到的Response.Write("<scripttype='text/ja

JSF页面中使用js函数回调后台bean方法并获取返回值的方法

由于primefaces在国内使用的并不是太多,因此,国内对jsf做系统.详细的介绍的资料很少,即使有一些资料,也仅仅是对国外资料的简单翻译或者是仅仅讲表面现象(皮毛而已),它们的语句甚至还是错误的,很可能会误导使用者. 相对来说,看国内的那些仅仅是翻译过来的文章或书籍不如直接看国外的官方文档或资料来的实在,在我讲述jsf页面中如何使用js调用后台bean方法之前,先给大家说几个国外的资料.在primefaces官方网站上,你可以搜索到几乎所有你需要的东西,primefaces官网为:http:

JavaScript函数的其他属性和方法

一.length属性: length 属性表示函数希望接收的命名参数的个数. function box(name, age) { alert(name + age); } box("包包",20); alert(box.length); //2 即该函数中参数的个数 二.prototype属性 prototype 下有两个方法:apply()和 call(),每个函数都包含这两个非继承而来的方法.  这两个方法的用途都在特定的作用域中调用函数,实际上等于设置函数体内 this 对象的值

【JS】&lt;a&gt;标签调用js中函数的几种方法

我们常用的在a标签中有点击事件: a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题,而且javascript:协议作为a的href属性的时候不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放.W3C标准不推荐在href里面执行javascript语句 a href="javascript:void(0);" oncl

JS中的对象和方法简单剖析

众所周知,在js中对象就是精髓,不理解对象就是不理解js. 那么什么事js中的对象呢? 在js中,几乎一切皆对象: Boolean ,String,Number可以是对象(或者说原生数据被认作对象): Dates ,Maths,Regexps,Arrays,Funcitons,当然Objects,这些都是对象: JS中,所有值,除了原生值,都是对象:这些原生值包括:strings,numbers('3.14'),true,false,null和undefined 对象是包含变量的变量,js变量可

Js文件中调用其它Js函数的方法

Js文件中调用其它Js函数的方法 在项目开发过程中,也许你会遇这样的情况.在某一Js文件中需要完成某一功能,但这一功能的大部分代码在另外一个Js文件中已经完成了,自己只需要调用这个方法再加上几句代码就可以实现所需的功能.我们知道,在html中,利用<script language="javascript" type="text/javascript" src="../script.js"></script>引入的两个js是

JS函数的定义与调用方法

原文:http://www.cnblogs.com/mq0036/p/3934867.html JS函数调用的四种方法:方法调用模式,函数调用模式,构造器调用模式,apply,call调用模式 1.方法调用模式:先定义一个对象,然后在对象的属性中定义方法,通过myobject.property来执行方法,this即指当前的myobject 对象.var blogInfo={ blogId:123, blogName:"werwr", showBlog:function(){alert(

关于js函数,方法,对象实例的一些说明

朋友们大家好,好久没有更新文章了,最近正好有空就想着写点什么吧,加上这段时间总是能听到一些朋友们问关于js函数,方法,对象实例到底有什么区别这个问题,所以今天就献丑来简单说明一些吧! 其实这些主要都是一些概念上的东西,在这里还是推荐大家多看看诸如<JavaSript权威指南>,<JavaScript高级编程>之类的书籍,当然这些概念如果用代码写出来我相信大家也都还是能够知道的,所以下面我就用文字和代码举一些简单的例子进行说明: 函数:简单的说函数就是,使用function关键字定义

php如何向js函数传参的几种方法

在php编程中向js函数传参可以使用$_POST也可使用$_SESSION[' '],也可用echo语句进行输出 <?php echo "<script>test('$_POST[userid]');</script> ";?>在上面的$_POST['']也可适用$_SESSION[' '];<?php $para = "hello boby!"; echo $para; // www.jbxue.comecho "