最新回答 / testname
这个应该是函数用途的问题了,如果foo()这样写,那函数本身就是当做window的方法使用,如果new foo(),就相当于把函数当做一个类,实例化这个类,bind方法只是对于前者来说的,如果new一个实例的话来说bind没有丝毫作用,相当于是var func = foo; 只不过是把函数指针重新复制了一遍而已,那么传入bind()的{a : 1}肯定也是没用的。
2016-10-18
最新回答 / king0964
bar.call(7)是利用call改变函数bar()中的this的指向,且立即执行函数bar();由于this执行对象为7,执行语句变为“console.log(Object.prototype.toString.call(7)”,所以结果显示“[Object Number]”
2016-10-18
最赞回答 / lym_0001
1、函数的声明会被前置,如:function foo(){}; 会初始化在一个vo变量对象里面,这个函数的值为:foo函数本身。2、函数的表达式会被忽略掉,更不会被前置,如:var a =function fpp(){};这里的fpp是一个函数表达式(因为他要是赋值给a)在这里初始化的时候会被忽略只保留变量a,且变量a的值初始化为undefined。参照方法图:<...图片...>
2016-10-18
最赞回答 / 火星漫步
(function (){})()就是一个匿名函数自执行;var c = function (){}();一样,只不过是匿名的,为了不让浏览器认为是函数声明,所以前面加了( ); return function (){}就是将函数作为返回值抛出,没什么好说的。document.write((function(a,b){ return a +b; })();)是因为你write()里面有“;”write本来就是一个函数,函数里面有";"肯定会报错,
2016-10-18
最新回答 / 楼兰王子
第一个问题:forEach函数的声明是这样的:<...code...>可以看到,第一个参数是数组的值,第二个是索引,第三个是数组。如果使用时只用一个参数,只会遍历值,不会访问另外两个值。第二个问题:<...code...>看见sort可以接收一个比较函数,来决定元素的排序规则,如果缺省,将按ASCII character 规则排序。是否还有疑问?
2016-10-17
最新回答 / bumuxiaojie
对象字面量定义的对象指向的就是Object,所以直接使用__proto__就可以从Object.prototype上获取。而函数定义的是返回function,function需要在Object的原型链上查找
2016-10-15
最赞回答 / 时间是个魔鬼
首先get age() 、set age(v) 其实已经相当于声明了一个age属性,但你在上面已经声明过一次,这在严格模式下会检查出错。然后你在get age()里试图使用this.age 会循环调用get age()方法,最终结果就是爆栈 ~_~;另外 可以学习下chrome的调试工具的使用,通过设置断点来观察变量和执行顺序会有很大帮助另外的另外 还是贴代码比截图好多了吧,提问窗左上角有个下拉框选择语言
2016-10-14
最新回答 / 时间是个魔鬼
try..catch 或者说异常处理 在编程中是 非常非常非常 重要的 。至于为什么重要,可以说搜一下这方面的文章,当然以后敲的多了自有体会。说异常是自己输入的不太准确,应该说我们可以制造并抛出异常 就像 throw new Error("我是被制造出来的哦")。Error 也是个对象,它负责对异常信息的包装,这里通过它的构造函数来创建一个异常。throw 会将刚刚创建的异常抛出,如果上层还有try就会受到这个异常并对其处理,依次类推,如果最外层扔抛出异常,程序就会终止并把异常打印到控制台。就像你之前敲代...
2016-10-13
最新回答 / 勇闯极限
这里用call是为了使用student中的2个参数name,和age来调用构造函数里的name和age,用call调用student里就不用在写this.name=name,this.age=age了,如果还不懂的话你就上网查call和apply和bind的用法。
2016-10-11