最新回答 / 前端小蜗牛_
new操作符应该会影响this的值,同时,如果函数体里没有return语句或者返回的是一个基本类型的值时,就将这个this的值作为返回值,但是返回的是一个对象,那么就将这个对象作为返回值返回。在这里,首先会创建一个新的对象,然后将这个this指向这个空对象,然后执行b的语句操作,最后返回这个对象,这个对象包括了b的值。
2016-10-19
最赞回答 / ZTON
我是这样理解的:bar.call(7) 结果this=7然后执行函数内部的Object.prototype.toString.call(this) 就相当于object.prototype.toString.call(7) 相当于 7.prototype.toString();或 这样理解bar.call(7) 为7.bar() Object.prototype.toString.call(this) 为this.prototype.toString(); 7.bar() 调用时,this指向7...
2016-10-19
最新回答 / 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
已采纳回答 / weibo_陈杰夫长颈鹿_0323711
关于add.call(o,1,10);你可以理解为,对象o中有了add这个方法,即:var o{a:1,b:3,// 在对象o中新增加了 function add(c,d){ return this.a +this.b+c +d; } return this.a +this.b+c +d}此时的a,b就是1,3;而1,10就是c,d
2016-10-18
最赞回答 / 火星漫步
(function (){})()就是一个匿名函数自执行;var c = function (){}();一样,只不过是匿名的,为了不让浏览器认为是函数声明,所以前面加了( ); return function (){}就是将函数作为返回值抛出,没什么好说的。document.write((function(a,b){ return a +b; })();)是因为你write()里面有“;”write本来就是一个函数,函数里面有";"肯定会报错,
2016-10-18
已采纳回答 / 慕莱坞7559429
首先,还是建议问问题可以贴出代码,这样可能可以让大家更加明白你要问什么问题。下面是我个人的理解,如果说错了还希望大家或者题主指正。就这个问题,我想可以先说说表达式key1.join().indexOf(typeFirst)<0中两个方法join()以及indexOf()的用法:(1)join():作用是将数组转化为字符串,其作用与toString()相同。(2)indexOf():返回某个指定的字符串值在字符串中首次出现的位置。要注意的是indexOf()对大小写敏感且如果要检索的字符串值没有出现,...
2016-10-18
最新回答 / 楼兰王子
第一个问题:forEach函数的声明是这样的:<...code...>可以看到,第一个参数是数组的值,第二个是索引,第三个是数组。如果使用时只用一个参数,只会遍历值,不会访问另外两个值。第二个问题:<...code...>看见sort可以接收一个比较函数,来决定元素的排序规则,如果缺省,将按ASCII character 规则排序。是否还有疑问?
2016-10-17