百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> JavaScript函数内部属性的介绍(附示例)
分享文章到:

JavaScript函数内部属性的介绍(附示例)

发布时间:09/01 来源:未知 浏览: 关键词:

本篇文章给大家带来的内容是关于JavaScript函数内部属性的介绍(附示例),有必然的参照 价值,有需要的伴侣可以参照 一下,但愿对你有所帮忙。

函数内部有两个非凡对象,this、arguments,其中arguments是一个类数组对象,包括着传入函数中的所有参数,主要用来留存函数参数。arguments对象还有一个callee属性,callee是一个指针,指向具有这个arguments对象的函数。

callee

function fact(num){
        if(num<=1){
        return 1;
        }else{
        return num*fact(num-1);
        }
    }

这是一个实现阶乘的函数,采纳递归的方式,这种方式存在一个问题就是,当fact的名称更换今后,假如不及时更换函数内部的函数名称,该函数则无效。此时采纳callee属性替换当前具有num参数对象的函数也就是fact.

采纳callee实现如下

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

this

this援用的是函数施行的环境对象,当函数被当做某个对象的办法调取时,此时的this对象援用的是当前调取函数的对象。

不一样的环境this指向的值不一样,下面是几种this在不一样施行环境下所指向的值

办法调取

当函数作为对象办法的时候,函数里的this被绑定到当前对象上(也可以称之为办法调取)

例如:

var myNum = {
      value:1,
      increment:function(arg){
          this.value +=arg;

      }
  };
   myNum.increment(3);
  console.log('example1:'+myNum.value);//example1:4

上述的increment是一个对象办法,该对象办法内部的this指向的就是当前对象

函数调取

当函数作为非对象办法时候,this绑定到全局对象window,假如此时要调取内部函数可以采纳that = this。

// 一样的函数
function add(a){
    return a+2 ;
}

var value = 2;
myNum.count = function (){
    let value = 1;
    let help = function(){
        this.value = add(this.value);
    }
    help();
    console.log(this.value);//4
}
myNum.count();


that = this方式

var value = 2;
myNum.count = function (){
    let value = 1;
    let that = this;
    let help = function(){
        that.value = add(that.value);
    }
    help();
    console.log(that.value);//3
}
myNum.count();

结构函数

用new运算符调取结构函数,会先创立一个连接到结构函数的prototype(原型对象),再将this绑定到该对象

function Person(name){
    this.name = name;
}

Person.prototype.sayName = function(){
    return this.name;
}
var person1 = new Person('TOM');

console.log(person1.sayName());

apply\call\bind

绑定this到指定的环境对象

 
 var people = {
    name:"LILY"
}
console.log(Person.prototype.sayName.apply(people));
console.log(Person.prototype.sayName.bind(people)());
console.log(Person.prototype.sayName.call(people));

call :办法调取一个具有给定this值的函数,乃至供给的参数列表。
apply: 办法调取一个具有给定this值的函数,乃至供给的参数(数组或类数组对象)。
bind :办法创立一个新的函数,调取时设定this关键字为供给的“值”。

ES6 箭头函数

es6箭头函数里的this指向定义时所在的对象,不是施行的环境对象,就说明this在箭头函数里使用时是一个不变的值

function foo(){
    setTimeout(()=>{
        console.log('name:',this.name);
    },1000)
}
var name = "kiki";
foo.call({name:"didi"});//name:didi

箭头函数里this的值指向的是定义时所在的环境对象,es5中实现箭头函数的办法:采纳 that = this这种机制,实现this的绑定

以上是对函数的内部属性的懂得。

以上就是JavaScript函数内部属性的介绍(附示例)的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板