javascript - 要输出正确的myName的值要如何修改程序?为什么呢?
巴扎黑
巴扎黑 2017-04-11 10:36:10
[JavaScript讨论组]



    
    Document


    

巴扎黑
巴扎黑

全部回复(3)
阿神

这么改:

<script>
    var foo = function(){

        this.myName = "Foo function.";

    };

    foo.prototype.sayHello = function(){

        alert(this.myName);

    }

    foo.prototype.bar = function(){

        setTimeout(this.sayHello.bind(this), 300);

    }

    var f = new foo;

    f.bar();
</script>

因为当你把this.sayHello传给setTimeout后,this指针变了,所以需要用bind强制绑定到当前的this

PHP中文网
foo.prototype.bar = function(){
    
    setTimeout(function(){this.sayHello.bind(this)}, 300);

}
迷茫
foo.prototype.bar = function(){
    var _this = this;
    setTimeout(function(){
        _this.sayHello();
    }, 300);
}

ES6写法

foo.prototype.bar = function(){
    setTimeout(() => this.sayHello(), 300);
  };
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号