你好javascript day6

1)对象的引用

对象的引用方法有两种 点语法  【】方法

var obj{
a:1,
b:2,
c:3
};
console.log(obj.a);//1
console。log(obj["a"]);//1

 question:对象是什么?储存在哪里?

 栈 堆

栈的数据读取写入速度快     储存量小

堆的数据读取写入速度慢     储存量大

string  number  bool  undefined  储存在栈中

对象储存在堆中

栈中的变量一旦不再使用就会清理掉

堆中的对象的地址就是本身的引用地址 即使不再使用对象的地址也不会被清理  ——》 内存泄漏问题

obj=null   清理不再使用对象的引用地址   解决 内存泄漏问题

var  obj1={
a:1,
b:2
};
var obj2={
c:3,
d:4
};
 obj2=obj1;//把obj1的引用地址复制给obj2
console。log(obj1==obj2);//true  
 obj2.a=5;//两个对象的引用地址一样所以obj2可以调用到obj1下的a赋值5  a:5
 obj1.b=6;//调用自身下的值点语法即可                             b:6
 obj1.c=7;//由于引用地址一样obj1也可以找到obj2的值         c:7
 obj2.d=8;//调用自身                                   d:8
console.log(obj1.a,obj1.b,obj2.c,obj2.d);//5 6 7 8
 
tips:obj1地址复制给obj2时,由于obj2的地址丢失,obj2的值没有重新定义将会为undefined.

2)函数

函数也是对象

function  函数名(参数1,参数2){

代码块

};

函数名(参数1,参数2);//调用函数方法

函数方法的应用:

function calculate(v1,v2,type){
switch(type){
case"+":
console.log(v1+v2);
break;
case"-":
console.log(v1-v2);
break;
case"*":
console.log(v1*v2);
break;
case"/":
console.log(v1/v2);
break;
}
}
 calculate(8,9,"*");//72

函数方法调用严格按照顺序来

3)函数的定义

匿名函数

fn();

匿名函数没有名字

可以设置给一个对象,或者一个变量

命名函数

函数名();

命名函数可以在函数定义之前和之后执行,但是匿名函数只能在函数定义后执行
 
自执行匿名函数
 
function(){
代码块
})();
自身会执行无法调用执行
 
构造函数创建
 
var 变量名=new Function("参数1","参数2","代码块");
变量名(参数1,参数2);//调用函数方法
构造函数中,前面的内容就是这个创建函数的所有参数,最后一个内容就是这个函数执行代码块
要求所有内容都必须是字符串
缺点,构造函数创建函数缺点是运行速度慢,效率低,因为需要将所有的字符串转换为代码
 
对象方法定义函数方法
        var obj={
            fn:function(){
            代码块
            };
        };
 
4)函数的参数
 
形参  实参
function  testType(n,m){//该行的n,m为行参
console.log(n+m);//该行的n,m为实参
};
testType(8,8);//16
testType();//不填入参数也可以执行,相当于给形参定义undefined
testType(8);//只定义一个参数,第二个参数还是定义了undefined
testType(1,2,3);//多余的参数不会被传入接收到函数
//形参有几个实参就要有几个顺序不能改变
//不想给那个形参传入参数可以定义为undefined

        var obj={a:1};

        function fn2(o){
            o.a++;
        }
        fn2(obj);
        console.log(obj);

        // 传参传入的是对象,变量是对象,变量的值就是这个对象的引用地址
        // 当传参时将引用地址赋值给o,因此,o和obj的引用地址相同,是同一个对象,
        // 所以修改了o.a值,obj.a也被修改了
原文地址:https://www.cnblogs.com/zqm0924/p/12892262.html