js面向对象编程

笔记:《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"

原文地址:https://www.cnblogs.com/cmmsuju/p/7865572.html