context = args[0];//第一个参数是作为上下文
if(context==null){//处理null 和 undefined
return this();//window
}
context[this.name]=this;
return contextthis.name
}
return ret;
}
console.log(“-----------------”)
console.log(person.sayHi.myCall(pig));//小猪 在向你问好!
正常打印,现在再来试一下不传参数,以及传入null、undefined的情况:
console.log(person.sayHi.call(pig));
console.log(person.sayHi.call());
console.log(person.sayHi.call(undefined));
console.log(person.sayHi.call(null));
console.log(“-----------------”)
console.log(person.sayHi.myCall(pig));
console.log(person.sayHi.myCall());
console.log(person.sayHi.myCall(undefined));
console.log(person.sayHi.myCall(null));
输出:
小猪 在向你问好!
在向你问好!
在向你问好!
在向你问好!
-----------------
小猪 在向你问好!
在向你问好!
在向你问好!
在向你问好!
打印是一样的,加入参数的写一下,加入参数的话要稍作处理
===========================
Function.prototype.myCall=function(){
var ret;
var args=arguments;
if(arg
真题解析、进阶学习笔记、最新讲解视频、实战项目源码、学习路线大纲
详情关注公中号【编程进阶路】
s.length==0){
return this();//window
}else{
var context,arg,newArgs;
context = args[0];//第一个参数是作为上下文
if(context==null){//处理null 和 undefined
return this();//window
}
if(typeof context!==‘object’){
context = {};
}
context[this.name]=this;
var fn = this.name+“(”;
for(var i=1,len=args.length;i<len;i++){
arg = args[i];
if(i===1){
fn+=“'”+arg+“'”;
}else{
fn+=“,'”+arg+“'”;
}
}
fn +=“)”;
ret= eval(“context.”+fn);
}
return ret;
}
要处理成这样,来验证一下结果:
可以看到结果是一样的,接下来是完整的代码:
=========================
var person={
name:“人类”,
sayHi:function(a,b){
return this.name+" 在向你问好!“+a+” "+b;
}
}
//console.log(person.sayHi());
var pig={
name:‘小猪’
}
Function.prototype.myCall=function(){
var ret;
var args=arguments;
if(args.length==0){
return this();//window
}else{
var context,arg,newArgs;
context = args[0];//第一个参数是作为上下文
if(context==null){//处理null 和 undefined
return this();//window
}
if(typeof context!==‘object’){
context = {};
}
context[this.name]=this;
var fn = this.name+“(”;
for(var i=1,len=args.length;i<len;i++){
arg = args[i];
if(i===1){
fn+=“'”+arg+“'”;
}else{
fn+=“,'”+arg+“'”;
}
}
fn +=“)”;
最后:
总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。
面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。
lse{
fn+=“,'”+arg+“'”;
}
}
fn +=“)”;
最后:
总结来说,面试成功=基础知识+项目经验+表达技巧+运气。我们无法控制运气,但是我们可以在别的地方花更多时间,每个环节都提前做好准备。
面试一方面是为了找到工作,升职加薪,另一方面也是对于自我能力的考察。能够面试成功不仅仅是来自面试前的临时抱佛脚,更重要的是在平时学习和工作中不断积累和坚持,把每个知识点、每一次项目开发、每次遇到的难点知识,做好积累,实践和总结。