您的位置:首页 > Web前端 > JavaScript

call的实现原理及一个很好的应用场景

2017-08-11 18:12 267 查看
call方法是js中比较重要的一个知识点,看了很多介绍也未必能够对他有个深刻的理解,那就让我们看看他的实现原理吧。

//这个方法只是简单的模拟了call的实现原理,对context是否非空,参数对象素组字符串的类型都没有做处理。
Function.prototype.call2 = function(context) {
context.fn = this;
var args = [];
for(var i = 1, len = arguments.length; i < len; i++) {
args.push('arguments[' + i + ']');
}
//args数组自动toString处理
eval('context.fn(' + args +')');
delete context.fn;
}


原型链继承的一般写法,一直感觉不够简洁

function MyObject(name, message) {
this.name = name.toString();
this.message = message.toString();
}
MyObject.prototype.getName = function() {
return this.name;
};
MyObject.prototype.getMessage = function() {
return this.message;
};


偶然发现的call方法优化,感觉高大上很多

function MyObject(name, message) {
this.name = name.toString();
this.message = message.toString();
}
(function() {
this.getName = function() {
return this.name;
};
this.getMessage = function() {
return this.message;
};
}).call(MyObject.prototype);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript call prototype