js中各种函数调用的this问题(一些题目搞不懂) jsthis练习 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 推荐下我自己的一些关于this的总结,有兴趣,可以看下~~函数中this的指向-简单认识构造函数模式的一点新的认识如何您可以仔细的看完,应该会有不少收获的。 这些我都看了,还是不知道为什么答案是那些,我估计是函数调用理解的不透彻,你能帮我解释下这些函数调用的区别吗? var sss = a.sayName; sss(); //this.name = ? a.sayName(); //this.name = ? (a.sayName)(); //this.name = ? (b = a.sayName)();//this.name = ? //我现在也不知道你理解到哪个程度了,//所以,也不知道从哪里说起。//就拿你贴的这几行代码说下var name = "window", a = { name:"a", sayName:function(){ console.log(this.name); } }, sayName = a.sayName; a.sayName();sayName();console.log(sayName === a.sayName);//true,表示这两个实际上,就是一个函数。//验证:var fn1 = function(){}, fn2 = function(){};console.log(fn1 == fn2);//false,就算是两个完全看起来一模一样的函数,//如果是不同的function定义,那么它们都不会相等,更不会恒等。//所以,上面的sayName,代表的同一个函数。//而a.sayName内部的this是指向a对象的//sayName内部的this,是指向window对象的//那么对于下面的代码:(a.sayName)(); //this.name = ?//这里的括号,其实是没有用的,这个括号根本就不会执行什么//所以,可以看做是直接a.sayName();(b = a.sayName)();//this.name = ?//而这里就不同了,这里第一个括号,首先会执行的一个步骤,//就是赋值运算//b = a.sayName,然后再执行调用这个函数//b();因为,我说问题或者解释东西,都是以我自己的理解再说,我可能考虑不到,对方是如何进行理解的,所以,总会有时候,我想要表达的,对方也理解不了,所以,如果您不能理解我说的,麻烦您就直接把您的疑问,比较确切的说下,这样,也算是共同学习进步嘛,一直认为,如果不能把一个问题说明白,就是没有真正的理解这个问题。 网站链接问题? 转义问题 如何控制瀑布流的列数呢? 这段js脚本为什么不对? 如何在JS中判断1.浏览器是否最大化?2.屏幕分辨率是800X600?1024X768 求一时间处理函数,很急的,解决给分,高手帮忙 对象传递问题,好急啊~~~~~~~~~~~online wait 为什么使用event.keyCdoe会出错, hint : "event" is undefined 如何使用JavaScript寫動態樹 一个怪问题,右键菜单能否超出窗口范围? 什么点击两个按钮没有反应啊 Echarts的map在谷歌、IE下可以正常显示,火狐不显示,问题可能出在哪里?
构造函数模式的一点新的认识如何您可以仔细的看完,应该会有不少收获的。
这些我都看了,还是不知道为什么答案是那些,我估计是函数调用理解的不透彻,你能帮我解释下这些函数调用的区别吗? var sss = a.sayName;
sss(); //this.name = ?
a.sayName(); //this.name = ?
(a.sayName)(); //this.name = ?
(b = a.sayName)();//this.name = ?
//所以,也不知道从哪里说起。//就拿你贴的这几行代码说下var name = "window",
a = {
name:"a",
sayName:function(){
console.log(this.name);
}
},
sayName = a.sayName;
a.sayName();
sayName();console.log(sayName === a.sayName);
//true,表示这两个实际上,就是一个函数。
//验证:
var fn1 = function(){},
fn2 = function(){};
console.log(fn1 == fn2);
//false,就算是两个完全看起来一模一样的函数,
//如果是不同的function定义,那么它们都不会相等,更不会恒等。
//所以,上面的sayName,代表的同一个函数。//而a.sayName内部的this是指向a对象的
//sayName内部的this,是指向window对象的//那么对于下面的代码:
(a.sayName)(); //this.name = ?
//这里的括号,其实是没有用的,这个括号根本就不会执行什么
//所以,可以看做是直接a.sayName();(b = a.sayName)();//this.name = ?
//而这里就不同了,这里第一个括号,首先会执行的一个步骤,
//就是赋值运算
//b = a.sayName,然后再执行调用这个函数
//b();
因为,我说问题或者解释东西,都是以我自己的理解再说,我可能考虑不到,对方是如何进行理解的,所以,总会有时候,我想要表达的,对方也理解不了,所以,如果您不能理解我说的,麻烦您就直接把您的疑问,比较确切的说下,这样,也算是共同学习进步嘛,一直认为,如果不能把一个问题说明白,就是没有真正的理解这个问题。