JS学习之函数内部属性和方法

知识点:arguments和this对象、caller属性、apply()和call()方法    

  arguments对象:函数内部对象,传入函数中所有参数的集合,类数组对象

           属性:callee 指针,指向拥有这个arguments对象的函数  作用:解耦

  例子:迭代

    function factorial(num) {        if(num<=1){            return 1;        }else{        return ( num*arguments.callee(num-1));        }    }

    console.log(factorial(4));//24

    this对象:函数内部对象,引用的是函数执行的环境对象  在全局作用域执行函数时this为全局对象(window)    window.color=‘red‘;    var o={color:‘blue‘,};        function sayColor(){alert(this.color);};        sayColor(); //red       o.sayColor=sayColor;    0.sayColor();//blue  看this引用的谁     caller属性:指向调用当前函数的函数    保存着调用当前函数的函数的引用    function a(){        b();       }

    function b(){      alert(b.caller)      }        b();//输出a函数体

  apply()和call():  作用:修改函数this的指向(修改上下文),拓展函数的作用域,对象与方法解耦   区别:传参 apply(要修改的指向,参数数组/arguments对象) call(要求改成的指向,arg1,arg2...)        例子:哑巴说话      
      function PersonWei() {          }      PersonWei.prototype={          country:‘Wei‘,          sayCountry:function () {              console.log(‘I am form ‘+this.country);                        },                  }       var xuShu={           country:‘Shu‘,             }       var caoCao=new PersonWei();      caoCao.sayCountry();// I am form Wei      caoCao.sayCountry.call(xuShu); //I am form Shu

不知道这样做合不合理,定义了一个表示魏国人的构造函数PersonWei(),它具有属性:country和方法sayCountry(),然后实例了一个caoCao(曹操),我们想要帮xuShu(徐庶)说出自己的国家:    
caoCao.sayCountry.call(xuShu);让caoCao的this指向变为xuShu(借尸还魂?脑洞大开,应该就是鬼上身,借用你的身体来实现他的行为),这时候this.conutry 中的this指向的就是xuShu对象了,因此结果是  I am form Shu

  
时间: 2024-12-28 20:32:15

JS学习之函数内部属性和方法的相关文章

JavaScript函数内部属性和函数方法

函数是对象,有自己的属性和方法 .首先通过console下输出的函数属性方法来直观的看一下: 函数内部属性只要包括两个特殊的对象:arguments和this. 函数属性包括:length和prototype 函数方法(非继承)包括:apply()和call() 继承而来的函数方法:bind().toString().toLocaleString().valueOf() 其他的目前不熟,后面再补充 1. 函数内部属性 在函数内部,有两个特殊的对象,arguments和this. argument

Javascript高级程序设计——函数内部属性与函数属性

函数内部属性 函数内部有两个特殊的属性arguments和this.其中,arguments是类数组对象,包含传入函数中的所有值,这个arguments还有一个属性:callee,这个属性是一个指针,指向拥有arguments的函数.而this据以引用的是函数执行环境对象. function fib(n){ if(n = 1){ return 1; }else{ return n * arguments.callee(n - 1); } } //这里利用函数内arguments的callees属

2、函数内部属性 arguments是类数组对象,主要用途是保存函数参数,但这个对象中有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数

例如:(1).function factorial(num){ if(num<=1){ return 1; }else{ return num*factorial(num-1); } }//此时是递归算法 var trueFactorial=factorial;//将factorial复制给trueFactorial factorial=function(){ return 0; }//覆盖factorial函数 alert(trueFactorial(5));//0;因为辞职factorial

JS的Object类的属性、方法及如何创建对象

属性 constructor:对创建对象的函数的引用(指针).对于Object类,该指针指向原始的object()函数. prototype:对该对象的对象原型的引用.对于所有的类,它默认返回Object对象的一个实例. 方法 hasOwnProperty(property):判断对象是否有某个特定的属性.必须用字符串指定该属性(例如,o.hasOwnProperty(”name”)). isPrototypeOf(object):判断该对象是否为另一个对象的原型. propertyIsEnum

JS所有内置对象属性和方法汇总

JS三大对象 对象,是任何一个开发者都无法绕开和逃避的话题,她似乎有些深不可测,但如此伟大和巧妙的存在,一定值得你去摸索.发现.征服. 我们都知道,JavaScript有3大对象,分别是本地对象.内置对象和宿主对象. 在此引用ECMA-262(ECMAScript的制定标准)对于他们的定义: 本地对象 与宿主无关,独立于宿主环境的ECMAScript实现提供的对象. 简单来说,本地对象就是 ECMA-262 定义的类(引用类型). 这些引用类型在运行过程中需要通过new来创建所需的实例对象. 包

函数内部属性:arguments和 this

在函数内部,有两个特殊的对象: arguments和 this. arguments是一个类数组对象,包含着传入函数中的所有参数, 主要用途是保存函数参数. 但这个对象还有一个名叫 callee的属性,该属性是一个指针,指向拥有这个 arguments对象的函数 . 1 function box(num){ 2 if(num <=1 ){ 3 return 1; 4 }else{ 5 return num*box(num-1); //一个简单的递归 6 } 7 } 8 alert(box(4))

JS学习之函数的作用域

作用域 变量或者函数可访问的一个范围,以函数来划分,一个函数块就是一个作用域.一 全局作用域 全局:整个文档 变量或者函数在函数外面声明,那它们就是全局变量或者全局函数,在这个页面的任何地方都可以访问的到. 声明全局作用域的方法: 1.把变量或者函数放在函数外面声明 2.变量不用var声明,直接给变量赋值:不管在函数外还是函数内声明 全局变量在任何地方都可以访问的到是因为全局变量是window的一个属性,window是一个全局对象,本身在页面中的任何位置都可以访问 1 var a=10; 2 c

js学习之函数的参数传递

我们都知道在 ECMAScript 中,数据类型分为原始类型(又称值类型/基本类型)和引用类型(又称对象类型):这里我将按照这两种类型分别对函数进行传参,看一下到底发生了什么. 参数的理解 首先,我们要对函数的参数有一个了解: 形参就是函数内部定义的局部变量: 实参向形参传递值的时候,就是一个赋值操作,把实参的值直接复制一份给形参. 原始类型参数传递 示例1 var a = 1; function f(b) { a = 3; } f(a); console.info(a); // 3 示例1中的

非计算机专业的码农C#学习笔记 六、属性和方法

六.属性和方法 (一)属性 1.属性的定义:对象的组成部分的名称…理解游戏中的人物加点属性,HP,蓝等等就是属性 2.引用属性的方法:对象名.属性名 3.属性的代码:public string name{get{return **}:set{alue=….}:} (二)方法 1.方法:对象用来做什么的实现形式,如刀的方法就是砍 2.方法的声明修饰词: Private       只供class内部使用的方法 Public        公用的变量和方法 Protected Internal 此外