javascript基础拾遗(二)

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.装饰器

原文地址:https://www.cnblogs.com/shijingjing07/p/7989150.html