发表于: 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 是创建一个新的方法来进行调用,
// 一个对象可以作为call和apply的第一个参数,并且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'
评论