14、this讲解

this讲解

1.函数预编译过程this—> window

2.全局作用域里this —> window

3.call/apply 可以改变函数运行时this指向

4.obj.func(); func()里面的this指向obj)

练习

下面这段js代码执行完毕后x,y,z的值分别是多少?(12分)

// 两个函数名一样 后面的函数体会覆盖前面的函数体 所以结果是144
var x = l, y = z = 0;
function add(n){
	return n = n + l;
}
y = add(x);   // 4
function add(n){
	return n = n + 3;  // x=1+3=4
}
z = add(x);  // 4

请阅读以下代码,写出以下程序的执行结果;

function print(){
    console.log(foo);
    var foo=2;
    console.log(foo);  
    console.log(hello); // hello is not defined
}
print();

请阅读以下代码,写出以下程序的执行结果;

function print(){
    var test;
    test();
    function test () {
        console.log(1);  // 打印1
    }
}
print();

请阅读以下代码,写出以下程序的执行结果;

// 类型转换
function print(){
    var x = 1;  // 1 == “1”  ===是绝对等于  一模一样的才等于
    if(x == "1") console.log("One!");
    if(x === "1")console.log("Two!");
}
print();

请阅读以下代码,写出以下程序的执行结果;

function print(){
    var marty = {
        name:"marty",
        printName:function(){ console.log(this.name);}
    }
    var test1 = {name:"test1" };
    var test2 = {name:"test2" };
    var test3 = {name:"test3" };
    test3.printName = marty.printName;
    // bind是绑定 所以执行printName2是123
    var printName2 = marty.printName.bind({name:123});
    // test1替换printName中的this.name
    marty.printName.call(test1); // test1
    // test2替换printName中的this.name
    marty.printName.apply(test2); // test2
    marty.printName();  // marty
	printName2();  // 123
    test3.printName();  // test3
}
print();

请阅读以下代码,写出以下程序的执行结果;

var bar = {a:"002"};
function print(){
	bar.a = 'a';  // bar中a的属性值变成a
	Object.prototype.b = 'b';  // 原型中加b属性 属性值是b
    return function inner() {
		console.log(bar.a); // a
         console.log(bar.b); // b
	}
}
// 一个括号返回的是一个函数,第二个括号执行返回的函数
print()();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好好学习_fighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值