JavaScript——方法

定义方法:方法就是把函数放在对象里面,对象只有两个东西——属性和方法
给fengli对象绑定一个函数,就可以做更多的事情。比如,写个age()方法,返回fengli的年龄;
在一个方法内部,this是一个特殊变量,它始终指向当前对象,也就是fengli这个变量。所以,this.birth可以拿到fengli的birth属性。

      var fengli ={
            name:'feng',
            birth:'2000',
            //方法
            age:function () {
                //今年-出生年
                var now = new Date().getFullYear();
                return now - this.birth;

            }
        }
//属性
fengli.name;
//方法,一定要带()
fengli.name();

在这里插入图片描述
上述拆开写的话:
JavaScript的函数内部如果调用了this,那么这个this到底指向谁?
答案是,视情况而定!
如果以对象的方法形式调用,比如fengli.age(),该函数的this始终指向此刻被调用的对象,也就是fengli,这是符合我们预期的。
如果单独调用函数,比如getAge(),此时,该函数的this指向全局对象,也就是window。

        function getAge() {
            //今年-出生年
            var now = new Date().getFullYear();
            return now - this.birth;

        }


        var fengli = {
            name:'feng',
            birth:'2000',
            //方法
            age:getAge//使用的时候要加括号,传递的时候不用加括号
        }

在这里插入图片描述
apply
在这里插入图片描述


        function getAge() {
            //今年-出生年
            var now = new Date().getFullYear();
            return now - this.birth;

        }


        var fengli = {
            name:'feng',
            birth:'2000',
            //方法
            age:getAge
        }

        getAge.apply(fengli,[])//[]代表空参,意思是this指向了fengli这个对象,参数为空



在这里插入图片描述
另一个与apply()类似的方法是call(),唯一区别是:
apply()把参数打包成Array再传入;
call()把参数按顺序传入。
比如调用Math.max(3, 5, 4),分别用apply()和call()实现如下:

Math.max.apply(null, [3, 5, 4]); // 5
Math.max.call(null, 3, 5, 4); // 5
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值