首先 对象是指无序的属性的合集,key不重复,value为任何数据类型
表现方式{‘key’;value,‘key2’:value2,}
: 表示映射 = 表示赋值
单独创建一个对象有两种方法
a. new Object()
var x="age";
var obj= new Object();
obj.name="zhao"
obj.x=18;
obj[x]=20;
console.log(obj);
b. 字面量方式
var x="hooby";
var obj={ "name":"gao","age":18 };
obj.sex="男";
obj[x]="唱歌"
obj.say= function (){
}
console.log(obj);
创建多个对象有四个方法
c. 工厂模式
1、创建函数
2、传入参数
3、函数内创建对象
4、retrun 对象
function students(name,age){
var obj={
"name":name,
"age":age,
"say":function(){
}
}
return obj;
d. 构造函数
优点: 有从属
缺点: 代码重复(相同方法)、
共识:构造函数首字母大写
构造函数写法:
1、创建函数
2、传入参数
3、this.属性名 = 值
function Students(name,age){
this.name= name;
this.age= age;
this.say=function(){
}
}
e. 原型对象
优点就是公共相同的属性方法不重复,并且有从属关系
缺点是原型上的属性不可以单独修改
function Funn(){
}
Funn.prototype.name="liu"
Funn.prototype.age=18
var obj7=new Funn();
console.log("obj7",obj7);
obj7.__proto__.name="zhao"
console.log("obj7-name",obj7.__proto__.name);
var obj8=new Funn();
console.log("obj8",obj8);
obj8.__proto__.age=27
console.log("obj8-age",obj8.__proto__.age);
f. 组合模型
优点:代码不重复,有从属关系
function Fn(name,age){
this.name=name;
this.age=age;
}
// 方法 定义在 构造函数的 原型对象上
Fn.prototype.say=function(){
console.log("哈哈哈哈哈");
}
var obj1= new Fn("gao",12);
var obj2= new Fn("王",19);
console.log("obj1",obj1);
console.log('obj2', obj2);
obj1.say();
obj2.say();