对象
什么是对象,其实就是一种类型,即引用类型。而对象的值就是引用类型的实例。在ECMAScript中引用类型是一种数据结构。用于将数据和功能组织在一起,它也常被称做类,但ECMAScript中却没有这种东西。虽然ECMAScript是一门面向对象的语言。却不具备传统面向对象语言所拥有的类和接口等基本结构。
万物皆对象,除了数字,字符,布尔这种绝对值以外的所有部分都是对象,对象是类的实例化体现,类是对象的抽象体现。
对象是一个个体,他具备自身类的所有属性和方法。
//对象中有属性和方法
//属性就是key对应的value是一个值
//方法就是key对应的value是一个函数
var obj ={
a : 3 ,
b: 2,
c : functionx(){
console.log("aaa");
};
//使用JSON无法选中dui
var str = JSON.stringify(obj);
console.log(str);
//将函数转为字符串重新赋值给c属性
obj.c = obj.c.toString();
//转为JSON字符
var str = JSON.stringify(obj);
//恢复为对象
var o = JSON.parse(str);
console.log(o);
- 对象创建
var obj = new Object();
obj.属性=属性值
obj.方法=方法函数
obj[属性]=属性值
obj[方法]=方法函数中括号中的属性和方法必须是字符串,
如果是变量,该内容必须是字符型变量。
var obj = {};
花括号在语言中是指代码块的意思,在obj也相当于一个代码块。
obj自身在使用中可以完成和丰富各种代码块。
var obj={
属性:属性值,
方法:方法函数
}
在函数中,有时候需要返回一个对象,这时候,我们通常使用花括号的形式来返回对象
function abc(){
return {
属性:属性值,
方法:方法函数
}
}
var obj= {
};
obj.a = 1;//直接描述对象下有一个a的属性值,值是1
obj["a"]= 1;//对象[字符key]=value;
//key就是属性名称,必须是字符串(ES5)
var a = "a";
obj[a]= 1;// 中括号的方式是可以带入变量作为key的,点语法不能使用变量
var obj={
a:1,b:2,c:3,d:{
a:1,b:2}};
for(var prop in obj){
//prop就是obj下的所有属性名key
//每循环一次就将属性名给prop变量
console.log(prop ,obj[prop]
}
//浅复制
var obj1 ={
};
for(var prop in obj1){
obj1[prop]=obj[prop];
}
//obj.a= 10;
//复制后切断引用关系,所以源对象属性值改变,新对象不变
obj.d.a=10;
console.log(obj1);
var obj = Object.create();
Object.create(proto, [ propertiesObject ])
proto对象原型
propertiesObject 一组属性和值,该参数对象不能是 undefined,
另外只有该对象中自身拥有的可枚举的属性才有效,
也就是说该对象的原型链上属性是无效的。
该方法可以针对已知对象创建新对象也可以创建一个空对象。
-
对象的属性和方法
delete
删除对象的属性
var obj={a:3,b:4}
delete obj.a;
也可以根据键值删除对象下的属性。
for in
var obj={
a:1,b:3};
for(var str in obj){
console.log(obj[str]);
函数
1. 函数基础
函数对任何语言来说都是一个核心的概念。函数,是一种封装(将一些语句,封装到函数里面)。通过函数可以封装任意多条语句,而且可以在任何地方、任何时候调用执行。ECMAScript中的函数使用function关键字来声明,后跟一组参数以及函数体,也就是包裹在花括号中的代码块,前面使用了关键词 function:当调用该函数时,会执行函数内的代码。
function 函数名()
{
执行代码
}
函数声明
/*函数关键字 + 函数名 + (){
语句
函数体[]
}*/
//命名函数的创建
function fn(a,b){
console.log(a+b);
}
fn(3,4)
/*
注:1.函数命名跟变量一样,只能是字母、数字、下划线、美元符号,不能以数字开头。和变量名相同
2.后边()里放参数用的,参数就相当于变量,数量和名字可以自己定义
3.函数的后面{}里面是正式函数内的所有语句块,当执行函数时,就会执行{}中的内容
4.函数名:驼峰式命名法 ,首字母一般都是小写,如果该函数是构造函数,函数名首字母需要大写
5.在当前函数所在script标签创建时,优先将该函数存储在堆中,并且函数名存储在栈中
6.当前这个代码所在的script标签的上面的script的标签中任意函数和全局变量都是可调用的
*/
//匿名函数
fn();//执行会报错
var fn = function(){
}
//注意:代码运行到定义匿名函数后才可以调用该匿名函数
(function){
//自执行函数
}();
//构造函数定义函数
//可以动态构建函数
var fn = new;
Function ("a","b",