javaScript中关于this之软绑定应用

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>this之软绑定</title>
</head>
<body>
<script type="text/javascript">
// 软绑定
if (!Function.prototype.softBind) {
    Function.prototype.softBind = function(obj) {
        var fn = this;
        // 捕获所有 curried 参数
        var curried = [].slice.call( arguments, 1 );
        
        var bound = function() {
            return fn.apply(
            (!this || this === (window || global)) ? obj : this,
                curried.concat.apply( curried, arguments )
            );
        };
        bound.prototype = Object.create( fn.prototype );
        return bound;
    };
}

var name1 = { name: 'agugua' };
var name2 = { name: 'LiMing' };

function showName(){
    console.log('My name is '  + this.name)
}

//未软绑定
name2.showName = showName;
name2.showName();                   // My name is LiMing"

//软绑定
name2.showName = showName.softBind(name1);
setTimeout(name2.showName, 60);       // My name is agugua 

</script>
</body>
</html>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首先,什么是软绑定? 所谓软绑定,是和硬绑定相对应的一个词,在详细解释软绑定之前,我们先来看看硬绑定。 在Java...
    代码墨白阅读 196评论 1 0
  • 谈婚论嫁时,人们最常听到的一句话就是:女人这辈子,一定要找个对的人来托付终身。 可是却很少有人想到,如若当真托付,...
    在下贺公子阅读 635评论 0 0
  • 那得从去年一月份开始说起了。 我和他相识于一场与陌生人的旅行里。那时候我刚离职,心里想着反正快过年了,先去玩玩,过...
    两碗鱼蛋粗面阅读 877评论 2 1
  • 微风轻轻拂过面庞, 放飞浮躁的心情, 在大自然里飞扬, 呼吸着自由的空气, 身心都倍感舒爽。 湖面微波荡漾, 小船...
    静渊王阅读 226评论 0 0