1.调用系统的构造函数创建对象
var 变量名=new Object(); Object是系统的构造函数
(1)案例:我叫小明,男,今年25岁,喜欢前端编程
var xiaoMingObj=new Object();//实例化对象
xiaoMingObj.name="小明";
xiaoMingObj.sex="男";
xiaoMingObj.age=25;//定义属性
xiaoMingObj.bianCheng=function(){
console.log("热爱前端编程");
}//定义方法
//调用
console.log(xiaoMingObj.name);//小明
console.log(xiaoMingObj.sex);//男
console.log(xiaoMingObj.age);//25岁
xiaoMingObj.biancheng();//热爱前端编程
console.log(xiaoMingObj instanceof Object);//true
(2)工厂模式创建对象,一次性创建多个对象,把创建对象的代码封装在一个函数中
function createObj(name,sex,age){
var personObj=new Object();//实例化对象
personObj.name=name;
personObj.sex=sex;
personObj.age=age;//定义属性
personObj.say=function(){
console.log("大家好!我叫"+name+"今年"+age+"热爱前端编程");
}//定义方法
return personObj;//切记一定得返回此对象!
}
var person1=createObject("小明","男","25岁");
person1.say();
2.自定义构造函数创建对象(很重要,后面原型继承都用它)
它与函数的区别就是首字母是否大写,大写为自定义构造函数
语法是先定义构造函数再创键对象
案例:定义一个人的对象
function Person(name,age){
this.name=name;
this.age=age;
this.sayHi=function(){
console.log("我叫:"+this.name+",今年:"+this.age);
};
}//自定构造函数
var obj=new Person("小明","10岁");//创建实例化对象
//这里做了四件事:(1)在内存中申请一块空的空间,存储创建的新对象(2)把this设置为当前对象(3)设置对象的属性和方法的值(4)把this这个对象返回
console.log(obj.name);
console.log(obj.age);
obj.sayHi();
var obj1=new Person("小红","12岁");//创建实例化对象
//这里做了四件事:(1)在内存中申请一块空的空间,存储创建的新对象(2)把this设置为当前对象(3)设置对象的属性和方法的值(4)把this这个对象返回
console.log(obj1.name);
console.log(obj1.age);
obj.sayHi();
console.log(obj instanceof Person);//true;不再是Object
3.字面量的方式创建对象
缺陷:一次性的对象
var obj={
name:"小明",
age:20,
sayHi:function(){
console.log("我是:"+this.name);
},eat:function(){
console.log("吃东西了!");
}
}
obj.sayHi();//对象调用属性方法的第一种写法
obj["eat"]();//对象调用属性方法的第二种写法
console.log(obj["name"]);
4.补充:遍历对象
不能通过for循环遍历(因为无序),但可以通过for-in循环
for(var key in json){//key存储对象中所有的属性名
console.log(key);//json对象中的属性名字
console.log(json[key]);//注意:不能用json.key和json["key"],否者结果为undefined,这两种写法则是访问对象中的key属性了,对象中没有key属性;
}
总结了一些皮毛知识点,若有不足希望各位大神帮忙指点!