javascript学习笔记---9月23日

1.对象生成方法:javascript

var obj={};  //第一种
var obj = new Object();    //第二种 

2.读取一个属性有两种方法,一种是使用点运算符,一种是使用方括号运算符java

var obj = {
      p : 'hello world',
};

o.p   //点运算符

o['p'] //方括号运算符 ,键名必须用引号       

若是o[p]则代表p是个变量,等价于o[undifined],返回undefined数组

3.上面的特性能够用来检查一个变量是否被声明浏览器

if(a){
  a+=1;  
}
//报错  a is not defined

if(window.a){
 a+=1;
}
//undefined

  上面第二种写法之因此不报错,是由于在浏览器环境里,全部全局变量都是浏览器对象window的成员,window.a的含义是读取window里的a属性闭包

4.查看一个对象自己的全部属性可使用object.keys()方法函数

var o = {
 key1:1,
 key2:'hello world'
}

Object.keys(o)

返回["key1", "key2"]

5.删除一个属性能够用delete ,如delete o.pspa

6.若是不一样的变量名指向同一个对象,那么他们都是这个对象的引用,也就是说指向同一个内存地址,若是修改其中一个变量,会影响到其余变量,这种引用值局限于对象,对于原始数据类型则是传值引用prototype

7.in运算符用于肯定某个属性是否包含在对象中,也适用于数组code

8.两种声明一个函数的方法对象

function test(){
 //...
}
//用function命令命名

var test = function(){
 //...
}
//这种写法将一个匿名函数赋值给变量,这中方式声明函数不带有函数名。若是加上函数名,改函数名只在函数体内部有效

9.在js中,函数与其余数据类型处于同等地位,能够被复制给变量和对象的属性,也能够看成参数传入其余函数,或者做为函数的结果返回

10.函数名的提高:js引擎将函数名视同变量名,因此采用function命令声明函数时,整个函数会被提高到代码头部,因此下面代码不会报错

f();
function f(){
 //...
}

当用赋值语句定义函数时,js就会报错

f();
var f = function(){
 //...    
}

上面的代码等用于
var f;
f();
f = function(){
//...
}

当调用f的时候,f只是被声明尚未被复制,等于undefined,因此会报错,所以,若是同时采用function命令和赋值语句声明同一个函数,最后老是采用赋值语句的定义。

11.若是屡次采用function命令重复声明同一个函数,则后面的声明会覆盖前面的声明

12.因为函数名的提高,因此在条件语句中声明函数是无效的

13.函数对象的length属性,返回函数定义所需的参数个数

14.为函数的参数设置默认值

function test(a){
 (a !== undefined && a! == null) ? (a=a) : (a=1);
 return a;
}

会被认为是false的值: undefined , null , false , +0 , -0 , ''

15.arguments对象包含了函数运行时全部参数,arguments[0]表示第一个参数,arguments[1]表示第二个参数,以此类推,这个对象只有在函数体内部才能使用

须要注意的是:虽然这个对象很像数组,但它是一个对象,解决办法以下:

var args = Array.prototype.slice.call(arguments);

//or

var args = [];
for(var i=0;i < arguments.length;i++){
  args.push(arguments[i]);  
}

该对象还有一个callee属性,返回它所对应的原函数名称

16.闭包(closure)就是定义在函数体北部的函数

function f(){
 var v = 1;

 var c = function(){
  return v;
 };

 return c
}

var o = f();

o();        //返回1

闭包的特色在于c函数能够获取函数f的内部变量

17.当即调用的函数表达式(IIFE)

相关文章
相关标签/搜索