匿名函数
//函数的小括号:指向一个空间
var a=10; // 小括号就相当于指向a+b这个空间,空间里面的值先做相加
var b=20; // 然后通过小括号来取出这个值再把它拿来与20相加
var c=(a+b)+20 ;
console.log(c);
// (function fn(){}) //指向一个函数
//匿名函数: 没有名字的函数就叫匿名函数。
// function (){};
//匿名函数的使用:
//1、将函数作为参数传入时:通常使用函数就是 函数名() 的方式来调用它,但是这里没有给它命名它是如何执的呢?
function fm(n1){ //因为函数fn在执行的时候它是需要传入一个函数作为参数,不管传入的函数叫做什么名字他都会给它
n1(666); //改一个名字叫做 n1 所以没有名字的函数就获得了一个形参名叫做 n1 这样他就执行起来了。
};
fm(function (n){console.log(n)}); //这个函数的使用记得加分号 不然容易被认为是一个函数。!!!!
//2、利用小括号的指向:就是把一个匿名函数放在小括号内通过小括号来指向它,
//相当于不知道函数的名字,但是就指着这个函数说:就你这个函数执行一下!
(function (){console.log(777)})();
对象
//对象 就是一个空间内存放具体的不同的数据,可以是变量,函数,数字,布尔值,字符串,
// 这些数据都是成对出现的,叫做键值对key:value,它们都是一一对应的。
// key可以为字母,数字当它为数字是如果不加引号可能会导致点语法不能用。
// 对象的创建就会产生一个对应的空间,与函数一样,对象空间内部可以访问外部的值,二外部不能直接访问里面是的值。
var xiao={name:"xiao",eage:13,height:170};
//如何使用对象里的 属性,也就是如何使用对象里的值。
//1、对象名加点在加属性的方式:
console.log(xiao.name);
console.log(xiao.eage);
console.log(xiao.height);
//2、对象名加中括号加引号加属性的方式:
console.log(xiao["name"]);
console.log(xiao["eage"]);
console.log(xiao["height"]);
//3、对象属性值的修改:
xiao.name="hong";
console.log(xiao.name);
//在使用对象里面的属性时会出现两种情况:
//1、访问对象里面属性的值如果没有时它会显示undefined而不是报错。
console.log(xiao.ni);
console.log(xiao.中);
//2、访问对象里面的属性没有时,它会自己重新声明一个属性在它内部。可以利用这一点来给对象添加属性。
xiao.sex="女";
xiao.like=["唱歌","跳舞","滑冰","跑步"];
console.log(xiao);
//创建对象的方法:
//1、直接声明一个对象
var ming={name:"xiaoming",eage:20};
console.log(ming);
//2、利用关键词创建 new Object() 这里只是声明了一个对象里面没有属性,还需要重新给它添加属性。
// 每当有关键字 new 出现时就会有一个新的空间开辟,类似于var关键字、function关键字,不过var是声明变量,function是函数
// 而new表示空间。
var wang=new Object ();
wang.name="xiaowang";
wang.eage=30;
console.log(wang);
//3、利用函数创建: 有人把它叫做工厂模式。因为他可以创建多个对象。
function fn(name,eage,sex){
var p=new Object();
p.name=name;
p.eage=eage;
p.sex=sex;
return p;
};
var zhang=fn("xiaozhang",21,"男");
var zhao=fn("xiaozhao",43,"男");
var li=fn("xiaoli",19,"女");
console.log(zhang);
console.log(zhao);
console.log(li);
//4、利用“this.”加属性的方式创建:
//this.可以理解为让这个代码执行起来的对象的作用域。
//前面讲到过如果取一个对象里面的属性,但是没有这个属性那么他就会在这个对象的作用域中来声明一个属性
//而this.也是指向一个作用域,就有了第四种方法:
//首先声明一个变量,接着变量里面new一下(开辟一个新的空间)在调用函数同时传参,里面的代码就开始执行。
//这里的this.name就表示在执行这个代码的对象(fn(。。。))的作用域中新建一个属性name,
//而因为fn()前面有个new,所以就在new这个空间内建立一个属性name,
//然后再把new这个空间里的值附给一个变量,那么这个变量就变成了一个对象了。
function fn(height,name,eage){
this.name=name;
this.eage=eage;
this.height=height;
};
var lan=new fn(165,"xiaolan",18);
var deng=new fn(175,"xiaodeng",16);
console.log(lan);
console.log(deng);