这段代码哪里有问题?

 <script>
        $(document).ready(function () {            var box = $("#box1");            function changeColor(color) {                this.color = color;
            }

            changeColor.prototype.chanCol = function (obj) {                var color = this.color; //新增
                obj.on("click",function () {
                    $(this).css("background-color",color);
                });
            }            var ch = new changeColor("red");
            ch.chanCol(box);
        });    </script>

当我在$(this).css("background-color",this.color)这条语句中background-color属性值直接引用this.color时box的颜色并没有改变,但是把this.color赋值给color后在css()中写上color,box值就可以改变了,为什么不能直接写上this.color?

刚才想了一下,难道是作用域链的关系?


牛魔王的故事
浏览 442回答 1
1回答

叮当猫咪

这是this的作用域问题,在事件处理函数里的this不再指向ch这个对象,而是指向当前的事件对象,所以需要在事件处理函数外面定义一个全局的变量先缓存this
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript