window.onload的问题

window.onload的问题

http://img1.sycdn.imooc.com//climg/5d551aac0001bb5709510353.jpg

http://img1.sycdn.imooc.com//climg/5d551aac0001386814250962.jpg

http://img1.sycdn.imooc.com//climg/5d551ab60001dbd209490273.jpg

老师 你好 我把 js代码写在 window.onload中 就会显示没有定义person 去掉 window.onload就可以了 这是为什么

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好!

是这样的,使用window.onload函数里面的变量相当于是局部变量,在控制台相当于是全局中调用,调用不到。如下例子:

http://img1.sycdn.imooc.com//climg/5d5546630001906404270112.jpg

http://img1.sycdn.imooc.com//climg/5d55466c0001170504730122.jpg

如果帮助到了你,欢迎采纳,祝学习愉快~

好帮手慕码 2019-08-15 19:10:43

同学你好!

测试是不报错的, 同学是否有其哪里影响到了?http://img1.sycdn.imooc.com//climg/5d5530ae0001491c11200598.jpg

http://img1.sycdn.imooc.com//climg/5d5530bf00013cbf04350112.jpg

或者是把js文件使用引入的方式也不会报错:

http://img1.sycdn.imooc.com//climg/5d55312f00018ed506980337.jpg

http://img1.sycdn.imooc.com//climg/5d553136000151cf07980397.jpg

http://img1.sycdn.imooc.com//climg/5d55313d0001f32103240069.jpg

建议同学把这段代码粘贴到另一个地方,再测试下

如果帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 发抖的小春春 #1
    代码里面是有 person变量的 可是 在控制台里面显示的是 person变量没有定义 就是我图一
    2019-08-15 19:28:59
  • 提问者 发抖的小春春 #2
    但是同样的代码 不写在 windos.onload 中 就不会出现问题
    2019-08-15 19:31:56
提问者 发抖的小春春 2019-08-15 18:15:49

window.onload=function () {


    function Constructor(fn, args) {
        var _this = Object.create(fn.prototype);//_this是以 fn原型创建的对象
        var res = fn.apply(_this, args); //this调用fn
        return res ? res : _this;// 如果调用fn后又返回值 返回 res, 否则返回 _this 这个对象
    }

    function Person(name, age) {
        this.name = name;
        this.age = age;
    }

    Person.prototype.say = function () {
        console.log(`我叫 ${this.name}`);
    }
    var person = Constructor(Person, ['张三', 12]);

    console.log(person);

}


好帮手慕码 2019-08-15 17:58:40

同学你好!

建议同学粘贴代码至问答区进行测试哦,因为只有截图无法准确定位问题。

如果帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 发抖的小春春 #1
    window.onload=function () { function Constructor(fn, args) { var _this = Object.create(fn.prototype);//_this是以 fn原型创建的对象 var res = fn.apply(_this, args); //this调用fn return res ? res : _this;// 如果调用fn后又返回值 返回 res, 否则返回 _this 这个对象 } function Person(name, age) { this.name = name; this.age = age; } Person.prototype.say = function () { console.log(`我叫 ${this.name}`); } var person = Constructor(Person, ['张三', 12]); console.log(person); }
    2019-08-15 18:02:41
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师