-
非严格模式下,同一个属性可以定义多个,后面的覆盖前面的。
查看全部 -
- 字符串的剑法运算
+ 字符串之间的拼接
查看全部 -
属性标签的限制
查看全部 -
1.5类型转换查看全部
-
1.5类型判断查看全部
-
bind的柯里化功能的实际应用场景
可能在不同的页面我们需要获取不同的配置,但个别页面的配置又非常相似,比方说A、B、C、D四个页面,都有颜色、大小、其他一些配置信息,但A和B两个页面但颜色和大小都是“#CC0000”和“1024*768”,只有这个其他是不一样但配置。所以我们可以通过bind的柯里化功能,设置一个默认的配置(colors="#CC0000",size="1024*768"),在A页面只要传入最后一个参数defaultConfig("123"),在B页面只要传入最后一个参数defaultConfig("456")
查看全部 -
bind的柯里化功能
声明函数add,形参a、b、c,返回三个数之和
var func=add.bind(undefined,100)
undefined:这里不需要改变this指向,所以默认传了undefined
100:赋值给a,a=100
所以func(1,2)这里相当于将1赋值给了b,2赋值给了c,因此func(1,2)=100+1+2=103
var func2=func.bind(undefined,200)
undefined:未改变this指向
200:赋值给b(因为a已被赋值),b=200
所以func2(10)这里相当于将10赋值给了c,因此func2(10)=100+200+10=310
查看全部 -
声明一个函数foo,可以通过foo.length获取形参个数(x、y、z三个形参),foo.name获取函数名,arguments.length获取实参个数(这里实参为x=1,y=2两个实参)
若通过arguments[0]进行赋值操作,此时garguments[0]就是实参x,因此也同样会对x值进行修改
需要注意的是,这里未传入z参数,通过arguments[2]去访问的时候相当于没有绑定关系,此时对z进行赋值是不会生效的;另外还要注意严格模式下与一般模式下的区别
查看全部 -
call/apply方法
add.call(o,5,7) // o作为this 5赋值给参数c 7赋值给参数d
所以add.call(o,5,7)=this.a+this.b+c+d=1+3+5+7=16
apply和call的区别在于传参的不同,call的参数扁平化,apply的参数以数组的形式传递
add.apply(o,[10,20]) //o作为this 10赋值给参数c 20赋值给参数d
所以add.apply(o,[10,20])=this.a+this.b+c+d=1+3+10+20=34
查看全部 -
通过构造器创建对象o,此时this指向的是MyClass.prototype的一个空对象,调用o.a,返回的是MyClass.prototype.a,又因为MyClass中没有return,默认return的是this,即o.a=this.a=37
同样的因为C2中有返回值return(对象a),那么调用o.a时相当于对象a中a属性,o.a=38
查看全部 -
对象o中有个属性f,f是一个函数,那么这个函数f就是对象o的对象方法;
通过Object.create()创建了对象p,此时对象p原型会指向对象o;
对对象p上创建两个属性a和b,其值分别为1和4;
此时通过p.f()调用时,调用的是p原型上对象o的对象方法,此处this指向的是对象p(this.a=p.a,this.b=p.b)
查看全部 -
若函数作为对象的属性(即对象方法),作为对象方法去调用(o.f())时,此时this指向的是对象o;
若直接调用independent(),此时this指向的是window。但若通过o.f()作为对象方法去调用,this指向的又是对象o
查看全部 -
一般函数的this在浏览器指向的是window。直接调用f1(),返回是this指向的就是window;但若在严格模式下,直接调用f2()返回的this会指向undefined
查看全部 -
全局作用域的this在浏览器指向的window。
例如:this.document===window.document //true
this.a=37 相当于 window.a=37
查看全部 -
o.g(); {a:'test'}.f(); 返回对象{a:'test'}中的属性a的值 即test
查看全部
举报