2020.6.24学习日志

//有时候人最难改变的是自己 但有时也要试着去改变 

函数作用域

1.作用域:

(1)全局作用域:整个程序本身

(2)函数作用域(局部作用域):作用在函数大括号内

 

javascript对象

对象是大括号定义的无序的数据集合,由键值对构成,键与值之间都可以被视为对象。

语法:var obj={key1:value1,key2:value2};

(1)键名(对象属性)

键名也被称为属性,对象的所有属性都是字符串,所以加不加引号都可以。

如果属性不符合标识符的条件(比如第一个字符为数字,或者含有空格或运算符)。则必须加上引号。

(2)键值

对象的键值可以是任何的数据类型。

如果一个属性的值为函数,通常把这个属性称为方法。它可以像函数那样调用这个属性。

frank.ability();

 

对象的生成:

a.直接使用大括号创建对象

b.使用new命令生成一个object对象的实例

c.使用object.create方法创建对象

 

中括号和点符号的区别?

总结:点运算符不一定额能全部替代中括号运算符

(1)中括号可以用字符串变量的内同作为属性名,点运算符不能。

例:

var obj={

name:'zhang',

height:170,

};

var str='height';

console.log(obj.str);

console.log(obj[str]);

(2)中括号运算符可以用纯数字作为属性名。点运算符不能。

(3)中括号运算符可以用js的关键字和保留字作为属性名,点运算符不能。

 

对象的属性操作:

1.object.keys()

描述:用来获取对象中所有的属性并构成数组返回

语法:object.keys(对象)

2.delete obj.keys

3.in

检查对象是否包含一个属性

语法:'keys' in obj

4.for in 遍历对象的所有属性(快速遍历)

语法:var obj={key1:value1,key2:value2,key3:value3);

for(var pro in obj){

console.log(obj[pro]);

}

循环变量pro表示的是对象的属性名,并不表示属性的值

 

对象的印用:

基本数据类型和对象是不一样的

描述:如果一个变量指向一个对象,那么这个变量就称为这个对象的引用

注意:对一个对象的对象印用做出的修改,会影响整个对象的状态。

 

变量提升

js的工作方式,先解析代码,获取所有被声明的变量,然后再一行一行的运行。这造成的结果就是左右的变量声明语句,都会被提升到代码的头部。

函数提升

1.函数名提升

描述:通过function命令声明函数时,整个函数会像变量声明一样,被提升到代码头部。

注意:函数表达式声明不会 

 

值传递和地址传递

(1)原始数据类型(数值、字符串、布尔值)的内容传递方式是值传递 传递的内容是一个具体的数值 

而复合数据类型(数组、对象、其他函数)的内容传递是地址传递 地址传递的内容是一个具体的内存地址

总结用法:值传递不会对原有内容产生改变,而地址传递能够改变原数据

 

 

 

 

 

你可能感兴趣的:(自主学习日志)