笔记:《javscript面向对象编程》
1.数据类型:
i;(undefined)
var i;(undefined)
var i = null ;(null)
var i=1+undefined (NaN)
var i=1+null(1)
var i=""+null;(null)
var i=""+undefined ;(undefined )
NaN==NaN(false)
2.数组:
typeof [] ; object
数组中增加数据可以直接a[i]=''/push...
数组中删除:delete a[i]并没有删除数据,而是将a[i]=undefined
3.函数:
1.arguments参数
2.一些内置函数
parseFloat('1.23abc.00') //1.23 parseFloat('a1.23bc.00') //NaN
eval()会将其输入字符串当做javascript代码来执行:eval('var li =2 ;'); li //2 /*Eval is evil*/
变量作用域:函数作用域优于全局作用域:var a=123;function f(){alert(a); var a=1; alert(a);};f(); //undefined,1
函数也是一种数据typeof 为function
函数分为:回调函数,自调函数,内部(私有函数),返回函数的函数。
闭包:
var name = 'my window';
var n;
var obj = {
name: 'my object',
myObjFun: function () {
n = function () {
return this.name;
}
return n;
}
}
alert(obj.myObjFun());//‘my window'
alert(n())//my window'
var name = 'my window';
var obj = {
name: 'my object',
/*es6写法相同*/
myObjFun: function () {
return function () {
return this.name;
}
}
}
alert(obj.myObjFun()());//‘my window'
alert(obj.myObjFun().bind(obj)());//"my object"
var name = 'my window';
var obj = {
name: 'my object',
myObjFun: function () {
return this.name;
}
}
alert(obj.myObjFun());//"my object"