牛客网刷题总结(1)

1, 判断下列代码输出什么?

        // 判断下列代码输出什么?
        // 
        var myObject = {
            foo: "bar",
            func: function () {
                var self = this;
                console.log(this.foo); // 此处的this为myObject的this,故输出bar
                console.log(self.foo); // 此处的self承接this,故输出bar
                (function () {
                    console.log(this.foo); // 立即执行函数的this指向window对象, 而window上不存在foo故输出underfined
                    console.log(self.foo); // 此处要清楚立即执行函数的作用域内部无变量self,但是可通过作用域链向上查找,故找到父节点myObject的
                                           // self 输出bar
                }());
            }
        };
        myObject.func();
        

2, JavaScript 的保留字有哪些?
在这里插入图片描述
在这里插入图片描述
3, 一下代码输出什么?

// 以下JS代码的输出是什么?
        let A = function () { }
        A.prototype.a = 1; // 此步骤为在对象上创建a变量并且赋值为1
        let B = new A();
        A.prototype = {
            b: 2,
            c: 3
        }
        let C = new A();
        A.prototype.d = 4;
        console.log(B.a); // 1
        console.log(B.b); // underfined
        console.log(C.c); // 3
        console.log(C.d); // 4
        // 解析:
        // let A = function () { }
        // A.prototype.a = 1;
        // //此时 A.prototype = { a: 1 }


        // let B = new A(); //此时 B = {}
        // //在创建B时,已将B._proto_ = A.prototype = { a: 1 }
        // //即使后面A.prototype重新赋值,将A.prototype开辟了新的空间指向别的对象
        // //B._proto_并没有改,还是指向{a:1}这个对象


        // A.prototype = { //此时 A.prototype = { b: 2, c: 3 }
        //     b: 2,
        //     c: 3
        // }
        // let C = new A(); //C = {}
        // A.prototype.d = 4;//此时A.prototype = { b: 2, c: 3, d: 4 }

        // console.log(B.a); //1
        // console.log(B.b); //undefined
        // console.log(C.c); //3
        // console.log(C.d); //4

        //C.d
        //着重区分: A.prototype.d = 4 和 A.prototype 重新赋值 不是一个概念 
        //A.prototype重新赋值时,A.prototype已经指向另一个对象了   
        //A.prototype.d = 4时,访问的还是同一个A.prototype 对象 

4, 严格模式判断:
严格模式下构造函数其this指向实例化对象, 普通函数指向windows
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值