JS函数的属性

1.arguments.callee

        //经典的阶乘(递归)函数
        function factorial(num) {
            if (num <= 1) {
                return 1;
            } else {
                return num * factorial(num - 1);
            }
        }
        //消除函数名的耦合现象
        function factorial(num) {
            if (num <= 1) {
                return 1;
            } else {
                return num * arguments.callee(num - 1);//函数内部属性 [callee]
            }
        }
        var trueFactorial = factorial;
        factorial = function () {
            return 0;
        };
        alert(trueFactorial(5));//120  使用callee属性 接触函数名耦合状态 可以继续使用递归 否则返回0
        alert(factorial(5));    //0

2.Length:表示函数希望接收的命名参数的个数

3.prototype:在创建自定义引用类型以及实现继承时,该属性的作用极为重要,该属性不可枚举,因此使用for-in 无法发现

方法:

1.apply()和call()

用途:在特定的作用域中调用函数,等于设置函数体内this对象的值

        function sum(num1, num2) {
            return num1 + num2;
        }
        function callSum(num1, num2) {
            return sum.call(this, num1, num2);//明确传入每一个参数
        }
        function callSum1(num1, num2) {
            return sum.apply(this, arguments);//传入arguments对象
        }
        function callSum2(num1, num2) {
            return sum.apply(this, [num1, num2]);//传入数组
        }

        alert(callSum1(10, 10));//20
        alert(callSum2(10, 10));//20

2.bind():创建一个函数的实例,其this的值会被绑定到传给bind()函数的值

      window.color = "red";
        var o = { color: "blue" };
        function sayColor() {
            alert(this.color);
        }
        var objectSayColor=sayColor.bind(o);
        objectSayColor();//blue;

  

时间: 2024-08-06 07:58:25

JS函数的属性的相关文章

js函数prototype属性学习(二)

继续探讨js对象的prototype属性,前面已经看到在创建完一个对戏之后,随时都会有一个_proto_属性伴随所有,那么,这个_proto_又是用来干嘛的,面试时问的高大上的原型链又是怎么回事? 拿出前面已经有的例子,如下: function Person(name){ this.name = name; this.interduceSelf= function(){ alert("my name is " + this.name); }; }; Person.prototype.i

js函数prototype属性学习(一)

W3school上针对prototype属性是这么给出定义和用法的:使您有能力向对象添加属性和方法.再看w3school上给的那个实例,如下图: 仔细一看,原来最基本的作用就是对某些对象的属性.方法来扩展,我对这个实例又多写了几句代码进行测试,如下: var steve= new empolyee("Steve Jobs","enterpriser",1977); 这里我专门查看了steve这个实体所拥有的属性,发现多了一个salary属性,这个属性是新建实体时未曾

js函数的内部属性---arguments,callee,caller

在接下来的几篇文章中,我大家谈谈函数的内部属性,arguments,callee,caller (1)arguments,是一个类数组对象,其中包含了传入函数的所有参数,主要用途是,保存函数的参数: 代码1: function aa(b){alert(arguments);} aa(4); function aa(a,b,c,d){alert(arguments.length);} aa(1,2,3,4); function aa(a,b,c,d){alert(arguments[2]);} a

Vue ---- vue的基本使用 文本/事件/属性指令 补充: js面向对象 js函数

目录 日考题(知识点)??? 1.http 与 https 2.前端布局 3.orm 大概的大纲?? vue框架??? 1.创建vue实例 2.挂载点 3.data 变量 4.methods 方法 5.插值表达式 6.文本指令 7.事件指令 8.属性指令 9.补充:面向对象js 10.补充:js函数 日考题(知识点)??? 1.http 与 https http 与 tcp : 一个是应用层, 传输层, http 协议传输层采用的是tcp http的特点: 无状态 无连接 先客户端发送请求, 服

JS函数大全 莫名其妙找到的

1 .document.write(""); 输出语句 2 .JS中的注释为// 3 .传统的HTML文档顺序是:document->html->(head,body) 4 .一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5 .得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value) 6 .

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

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

JS函数与BOM

[函数的声明及调用]1.函数声明的格式:function 函数名(参数1,参数2,....){//函数体return结果;}函数名(参数1的值,参数2的值,....) >>>函数的调用格式直接调用:函数名(参数1的值,参数2的值,....)事件调用:事件名="函数名()"; 2.函数声明的几点强调: ①函数名的声明,必须符合小驼峰法则(首字母小写,之后每个单词字母大写) ②参数列表,可以有参数,也可以无参数.分别称为有参函数和无参函数. ③声明函数时的参数列表,称为&

JS 函数总结

函数的定义 (1) 函数的声明: function add(x, y) { return x + y; } (2)函数表达式 var add = function (i, j) { reutrn i + j; } (3)对象实例化(实际编程一般不会用),定义在全局. var add = new Function ('i', 'j', "return (i + j)"); 函数的属性: prototype:add constructor:function add(i, j) __prot

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

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