发表于: 2019-10-26 22:01:33

1 915


今天完成的事情:

跟师弟讲解了图片返回参数的具体用法。以及小课堂描述this指向
明天计划的事情:

讲解余下的angluar功能
遇到的问题:


收获:


// "use strict"

this到底是什么

var user = {

    fname:'花花',

    lname:"",

    fullname:function () {

        return user.lname + user.fname;

    }

}

console.log(user.lname + user.fname);

console.log(user.fullname);

对象打印出来的是2个拼接好的数值。

但是如果把变量名随便改变的话

var person = {

    fname:'花花',

    lname:"",

    a:{

        fullname:function () {

            console.log(this)

            return this.lname + this.fname;

        }

    }

    

}

console.log(person.fullname());

通过这个打印我们获得this现在代表这父级的对象也就是person

var cs = person.fullname;

console.log(person.fullname());

this等于什么不是取决余所在的位置,而是取决于怎么调用的。

而我是直接调用cs()所以这里this等于全局变量

如果是严肃模式下 那么打印出来的就是undefined 和等于全局变量是一样的.

如果是对象的形式把他作为方法来调用的话,它里面的this就相当于等于父级否则就是等于undefined

所以你直接在person在创建一个对象函数进行调用发现 this指向其实就是父级对象.

 

 

//构造函数的调用

// function User(){

//     console.log(this);

// this.name = '肥皂';

// this.age= "18"

// }

// var a = new User();

// console.log(a);

//现在的this就等于undefinde  因为它是没做为一个方法被调用

//但是你如果Nwe 一个的话 那么它就等于一个对象

//这个this就相当于即将生成的对象,你用New 来调就是这样

// 第一种情况

// 如果你把一个函数作为方法来调 ,那么this就是函数的父级对象

// 第二种

// 就是不管是属于全局函数还是没名字的函数在这里面都this都是undefined

// 第三种就是构造器

// this就相当于即将生成的对象

//this主要好处就是动态的赋值

 

 

function yo(name,a,b,c){

 console.log("yo,"+ name +a+b+c+"我是" + this.name)

}

// var hh = {

//     name:"whh"

// }

// var feizao = {

//     name:"feizao"

// }

// hh.yo =yo ;

// feizao.yo = yo;

//注意下 这要等于 yo本身而不是结果

// hh.yo();

// feizao.yo();

// var whh = {

//     name:"肥皂"

// }

var whh = {

    name:'肥皂'

}

yo.call(whh,'李狗蛋',1,2,3);

//主要this是用在不同的环境下不同的动态赋值

//yo.call()其实就是yo()的简单写法

//除了第一个 其他后面的都要一一对应

yo.apply(whh,["参数",1,2,3]);

yo2 =  yo.bind(whh);

yo2("肥皂",1,2,3);

 

//bind 是创建一个新的方法来进行调用,

 // 一个对象可以作为callapply的第一个参数,并且this会被绑定到这个对象。

//  var obj = {a: 'Custom'};

//  // 这个属性是在global对象定义的。

//  var a = 'Global';

//  function whatsThis(arg) {

//    console.log(this.a) // this的值取决于函数的调用方式

//  }

//  whatsThis();          // 'Global'

//  whatsThis.call(obj);  // 'Custom'

//  whatsThis.apply(obj); // 'Custom'



返回列表 返回列表
评论

    分享到