2019.1.4JavaScript

对象:

创建对象:

=============通过对象字面量的形式创建对象=============

var obj={};        //没有任何属性的对象     //对象用{ }  
alert(typeof obj);       //输出的数据类型 Object

var obj1={x:1,y:2,z:3};      //有属性的对象,键值对  x:键  1值
var obj2={            //对象里面可以放键值对,也可以放方法  后面用逗号隔开
'x':1,                //Javascript关键字必须放到引号之间 如:for  while  do  delete等
"y":2,
username:'king',
'for':'Javascript关键字必须放到引号之间',
'first-name':'queen',
married:true,
test:null,
test1:undefined,
salary:12.3,
person:{
username:'king',
age:12,
addr:'北京'
}

};

====================通过new Object()创建对象=================

var obj3=new Object();        //创建一个空对象,{}
var arr=new Array();          //空数组,[]
var date=new Date();          //日期时间对象
var reg=new RegExp('js');         //创建正则对象
console.log();

===================通过构造函数的形式创建对象=================

function Test(){          //Test 函数名

}

var obj4=new Test();

alert(typeof obj4);

function Test1(num1,num2){      //形参
this.n1=num1;
this.n2=num2;
}
var obj5=new Test1(5,6);        //参数

alert(obj5 instanceof Test1);        //instanceof实例化    判断对象obj4是不是由函数Test来创建的 结果为布尔类型  true

=================通过Object.create()创建对象============

var obj6=Object.create({x:1});
var obj7=Object.create(null);

var obj8=Object.create(Object.prototype);      //创建一个普通的空对象  也可以是上面那个
alert(typeof obj8);

===============增删改查===============

查询属性,对象.属性名/对象["属性名"]

var person={              //创建一个对象
username:'king',
age:12,
salary:1234.56,
addr:'北京',
sex:'男',
};

console.log('用户名为:'+person.username+"\n"+'性别:'+person.sex);    //查询属性 对象.属性名
console.log('薪水:'+person['salary']+'\n'+'地址:'+person["addr"]);      //查询属性  对象["属性名"]  一般用这一种

如果属性不确定,需要使用[ ]

var key='username';      
console.log(person.key);        //输出结果为undefined  因为上面的对象没有key

console.log(person[key]);        //输出的结果就为king
console.log(person['key']);         //属性名用引号来包,而上面的对象没有key

function PersonInfo(name,age,sex){        //通过构造函数的形式来创建对象
this.name=name;                //定义对象名
this.age=age;
this.sex=sex;
}
var person1=new PersonInfo('king',34,'男');        //创建了三个属性

console.log(person1.name+person['sex']);        //输出对象的属性

添加属性:

var obj={};//空对象      //创建一个空对象

obj.username='king';       //直接创建属性进行添加  .属性名
obj.age=12;
obj.addr='北京';
obj['test']='this is a test';        //[ "属性名" ]
console.log(obj.username+'\n'+obj.age+'\n'+obj.addr+'\n'+obj['test']);    //输出的结果就是上面对象的属性

修改指定属性:

obj.username='queen';      //也是直接修改
obj['test']='ymt';          //重新赋值
console.log('修改之后的名字'+obj.username);        //输出的结果为:修改之后的名字queen  
console.log(obj['test']);                  //test

通过delete删除指定属性:

delete obj['test'];            //直接删除指定的属性,
console.log(obj['test']);          //输出的结果就为undefined
delete obj.username;
console.log(obj['username']);
console.log(obj);            //删除过的属性,原始位置不保留,且新属性不占前面的位置,直接排在后面

通过for/in遍历属性:

var obj1={
x:1,
y:2,
test:'this is a test',
edu:'ymt'
};
for(var p in obj1){        //p在obj1对象中

console.log(p+'\n');        //输出p,输出的是对象中所以的键
}

对象中有方法:

var obj2={                //创建对象
username:'king',
age:12,
addr:'北京',
sayHi:function (){                //创建匿名函数对象属性
return 'say Hi';
},
info:function(){
return '用户名:'+this.username+'\n'+'年龄:'+this.age+'\n地址:'+this.addr;      //创建匿名函数对象属性
}
};
console.log(obj2.sayHi());          //输出的是函数里面要返回的内容:say Hi  要在对象名后面加()
console.log(obj2.info());
console.log(obj2.info);             //对象名狗不加()回输出info后的整个属性内容

function Person(username,age,sex,addr){      //形参
this.username=username; //后形参      
this.age=age;
this.sex=sex;
this.addr=addr;
this.info=function(){
return this.username+this.addr;
}
}
var p1=new Person('queen',34,'女','上海');        //参数
console.log(p1.info());

p1.test='this is a test';        //添加了一个属性
console.log(p1.test);        //输出结果this is a test

p1.info1=function(){            //添加了一个函数方法
return 'this is a test1111';          //返回
};
console.log(p1.info1());            //结果输出this is a test1111

原文地址:https://www.cnblogs.com/liuwei1/p/10218719.html