关于JS函数定义有关问题的咨询

关于JS函数定义问题的咨询


execute(say, "Hello World.");

function say(word) {
  console.log(word);
  
  this.userinfo = function(){
   console.log("ABCXYZ");
  }
  
}

function execute(someFunction, value) {
  someFunction(value);// 此处可以打印出value的值
  someFunction.userinfo;// 为什么此处不能打印出‘ABCXYZ’,如何修改userinfo才能打印出来呢?
}

------解决思路----------------------
 
function say(word) {
  console.log(word);
   
}
  say.userinfo = function(){
      console.log("ABCXYZ");
  }
 execute(say, "Hello World.");
function execute(someFunction, value) {
  someFunction(value);// 此处可以打印出value的值
  someFunction.userinfo();// 为什么此处不能打印出‘ABCXYZ’,如何修改userinfo才能打印出来呢?
}
------解决思路----------------------
someFunction是个构造函数,需生成对象再访问该对象的属性。建议多学习下javascript核心
------解决思路----------------------
new someFunction().userinfo();
------解决思路----------------------
你要清楚函数中的this是指什么?
在普通函数的调用方式下(非严格模式),this指的是全局对象,也就说你把userinfo这个函数给了全局对象,而不是say。直接调用userinfo()就能正常输出。
execute(say, "Hello World.");
 
function say(word) {
   console.log(word);
    this.userinfo = function(){
       console.log("ABCXYZ");
   }
}
 
function execute(someFunction, value) {
   someFunction(value);// 此处可以打印出value的值
   userinfo();// 为什么此处不能打印出‘ABCXYZ’,如何修改userinfo才能打印出来呢?
}