Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

javascript 设计模式(代理模式) #114

Open
wl05 opened this issue Apr 21, 2020 · 0 comments
Open

javascript 设计模式(代理模式) #114

wl05 opened this issue Apr 21, 2020 · 0 comments

Comments

@wl05
Copy link
Owner

wl05 commented Apr 21, 2020

概念

代理模式提供对一个对象的访问控制

实现

<!DOCTYPE html>
<html>

<body>

</body>
<script>
    var myImage = (function () {
        var imgNode = document.createElement('img')
        document.body.appendChild(imgNode)
        return {
            setSrc: function (src) {
                imgNode.src = src
            }
        }
    })()
    var proxyImage = (function () {
        var img = new Image()

        img.onload = function () {
            myImage.setSrc(this.src)
        }
        return {
            setSrc: function (src) {
                myImage.setSrc('https://pic.52112.com/JPG-180505/180505_34/C4DKZ4vo1K_small.jpg')
                img.src = src
            }
        }
    })()
    proxyImage.setSrc('https://img.tukuppt.com/bg_grid/00/14/86/WvJAithG7a.jpg!/fh/350')
</script>

</html>

这个demo我们实现了一个图片预加载的功能,在图片资源还没有真正的加载出来之前我们先用一张图片作为占位,当真正想要加载的图片加载完成时我们再把图片渲染出来。

参考资料

  1. JavaScript设计模式与开发实践-第六章-代理模式
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant