关于JS函数定义有关问题的咨询
关于JS函数定义问题的咨询
------解决思路----------------------
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的值
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才能打印出来呢?
}