javascript基础拾遗(二)

本文介绍了JavaScript中对象的定义方式,包括属性与方法,并详细解释了this关键字在不同上下文中所指向的对象变化,同时探讨了apply关键字的应用。

1.对象定义
定义属性

var language = {
        name:'javascript',
        score:9.0
    };
    console.log(language.name)
    console.log(language.score)

定义方法

var language = {
        name:'javascript',
        score:9.0,
        percent: function () {
            var result = this.score/10*100 + '%';
            return result;
        }
    };
    console.log(language.name)
    console.log(language.score)
    console.log(language.percent)
    console.log(language.percent())

this关键字详解
在属性和方法中,this关键字表示对象本身,即language
如果不在对象中定义的方法或变量中,this指代的是什么呢?

function get_percent() {
        var result = this.score/10*100 + '%';
        return result;
    }
    var language = {
        name:'javascript',
        score:9.0,
        percent: get_percent
    };
    console.log(language.percent())
    console.log(get_percent())
    var fn = language.percent
    console.log(fn())

当以对象的方式调用时,this指向被调用的对象,需要注意的是必须用obj.xxx(),this才指向该对象
当单独调用时,this指向全局对象,也就是window

如果是方法内部定义的方法呢?

var language = {
        name:'javascript',
        score:9.0,
        percent: function () {
            function get_percent() {
                var result = this.score/10*100 + '%';
                return result;
            }
            return get_percent()
        }
    };
    console.log(language.percent())

答案是找不到对象的,可以再方法内将this赋给变量,然后内部方法访问变量,就可以找到对象了。

2.apply关键字
apply关键字用来控制this指向的对象

function get_percent() {
        var result = this.score/10*100 + '%';
        return result;
    }
    var language = {
        name:'javascript',
        score:9.0,
    };
    var result = get_percent.apply(language,[])
    console.log(result)

get_percent.apply(language,[])
language:get_percent函数的this参数绑定为language
[]:get_percent函数本身的参数

与call关键字的区别,apply参数是数组,call按顺序传入。

3.装饰器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值