javascript(3)对象与函数

 函数 

函数的2种声明方式

//1.函数关键字自定义函数(命名函数)
function fn() {              // (会进行函数提升)
  return "abc";
}
console.log(fn()); //abc

//2.函数表达式(匿名函数)
var f0=function(){          //f0 为变量名,不是函数名。变量中存的是函数 (会进行变量提升)
    console.log("我是函数表达式");
}
f0();//我是函数表达式

//ES6的箭头函数 相当于匿名函数
var fun0=()=>{return "abc"}
var fun1=x=>x*2;
var fun2=(a,b)=>{return a+b}
console.log(fun1(2));//4

函数可以互相调用(实参也可以是函数)

fun(fun1)             相当于直接使用函数a对象
fun(fun1())           相当于使用函数a的返回值

立即执行函数:

(function(){
    console.log("haha");
})();   
// 立即执行函数   往往只执行一次

object对象

自定义对象:由开发人员自己创建的对象

内置对象:如 Math, String ,Number, Boolean, Function ,Object...

浏览器对象:BOM(浏览器对象模型)

创建对象的三种方式:

1.      var obj =new Object();        

delete obj.属性名;    删除对象属性

var obj =new Object();    //用new关键字调用的函数是构造函数
obj.name="lightwine";     //构造属性: 对象.属性名=属性值;
obj.gender="male";
console.log(obj.name);//lightwine  //读取属性:对象.属性

delete obj.gender;        //删除对象的属性

obj["123"]=789;    //特殊的属性名不用. 用[""]创建,取时同理
console.log(obj["123"]);//789

 2.     对象字面量:可以在创建对象时直接指定对象中的属性。

//对象字面量   
var obbj={
    name:"misaka",
    age:17,
    genedr:"famale",
    level:5,
    test:{name:"lwine",level:6}
};
console.log(obbj.test);//{ name: 'lwine', level: 6 }

3.    构造函数创建对象

构造函数 和 创建普通函数 没有区别,只是构造函数习惯首字母大写

构造函数和普通函数的区别是调用方式不同,普通函数是直接调用;构造函数使用new关键字调用。

利用构造函数创建对象的过程叫做对象的实例化

instanceof 检查一个对象是否是一个类的实例。(对象 instanceof 构造函数

in 运算符  -检查一个对象中是否有指定的属性

function Person(uname, age, level) {
  this.name = uname;
  this.age = age;
  this.level = level;
  this.skill = function (skill) {
    console.log(this.name + "'s skill:" + skill);
  };
}
var yb = new Person("Misaka", 15, 5);
var yf = new Person("Accelerator", 16, 5);
yb.skill("超电磁炮"); //Misaka's skill:超电磁炮
yf.skill("矢量操作"); //Accelerator's skill:矢量操作
console.log(yb.level); //5

console.log("level" in yb); //true   level是对象yb的属性
console.log(yb instanceof Person); //true   对象yb是类Person的实例

//new关键字执行过程:
//    1.new 构造函数在内存中创建一个空的对象
//    2.this 就会指向刚才创建的空对象
//    3.执行构造函数的代码 给空对象添加属性与方法
//    4.将对象作为返回值返回

如果一个函数作为对象的属性,那么这个函数称为对象的方法(method).

 如上例中的skill()方法。

 用自变量传递属性参数

 设置一个变量的值为对象中的属性,可用对象[变量]:属性值 来找到对象中该属性的值。

var obj={
    name:"misaka",
    genedr:"famale",
    level:"lv5",
    test:{name:"lwine",level:"lv6"}
};

var n="level";
console.log(obj[n]);//lv5
//这里的n的值是哪个属性,它就去找哪个属性的值

 枚举对象中的属性

for...in语句for(var 变量 in 对象){    }

-每次执行时,会将属性名赋值给变量

var obbj = {
  name: "misaka",
  age: 17,
  genedr: "famale",
  level: 5,
  test: { name: "lwine", level: 6 },
};
console.log(obbj.test); //{ name: 'lwine', level: 6 }

for (var n in obbj) {
  console.log("属性名:" + n); //这里的n为属性名
} //属性名:name  属性名:age  属性名:genedr  属性名:level  属性名:test
for (var i in obbj) {
  console.log("属性值:" + obbj[i]); //语法:对象["属性名"]:属性值  (因为n是变量)
} //属性值:misaka 属性值:17 属性值:famale 属性值:5 属性值:[object Object]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值