1.对象------三种创建对象的方式
/**
* js是一门基于对象的语言
*
*创建对象的三种方式:
* 1.调用系统的构造函数创建对象
* var 变量名=new Object();Object是系统的构造函数
*
* 2.自定义构造函数创建对象
* 自己定义一个构造函数,创建对象
* 函数和构造函数的区别:名字首字母是不是大写
*
* 3.字面量的方式创建对象
*
* 总结:
* 1.字面量创建对象的缺陷:一次性的对象
* 2.点语法:对象.名字=值;对象.名字=函数
*
*/
//实例化对象
var obj=new Object();
/**
* 对象有特征-----属性
* 行为-----方法
*/
//添加属性:对象.名字=值
obj.name="小苏";
//添加方法:对象.名字=方法
obj.eat=function (){
console.log("吃");
};
//输出
console.log(obj.name);
obj.eat();
/**
* 如何获取该变量(对象)是不是属于什么类型?
* 语法:变量 instanceof 类型的名字
* 在当前的对象的方法中,可以使用this关键字代表当前的对象
*/
console.log(obj instanceof Object);//true
var person=new Object();
person.name="小米";
person.age=13;
person.say=function (){
//在当前这个对象的方法中可以访问当前这个(this)对象的属性的值
console.log("名字:"+this.name);
}
//如何一次性创建多个对象?把创建对象的代码封装在一个函数里
function creationObject(name,age){
var obj=new Object();
obj.name=name;
obj.age=age;
obj.say=function (){
console.log("名字:"+this.name+"年龄:"+this.age);
};
return obj;
}
var per1=creationObject("小芳",13);
per1.say();
var per2=creationObject("小明",14);
per2.say();
//自己定义构造函数
function Person(name,age){
this.name=name;
this.age=age;
this.say=function (){
console.log(this.name);
};
}
//设置和获取属性的另一种写法
var per=new Person("小明",12);
per.name="小明";
per["name"]="小明";
console.log(per["name"]);
per.say();
per["say"]();
/**
* 创建对象:
* 1.在内存中开辟,存储创建的新的对象
* 2.把this设置为当前的对象
* 3.设置对象的属性和方法的值
* 4.把this这个对象返回
* @type {Person}
*/
console.log(per.age);
console.log(per.name);
per.say();
console.log(per1 instanceof Person);
console.log(per2 instanceof Person);
console.log(per instanceof Person);
var obj1={};//空对象
//用字面量创建对象
var obj2={
name:"小明",
age:17,
say:function (){
console.log(this.name);
},
eat:function (){
console.log("吃");
}
}
obj2.name="小明";
console.log(obj2.name);
obj2.say();
obj2.eat();
2.JSON格式的数据
//JSON格式的数据:一般都是成对的,是键值对
//json也是一个对象,数据都是成对的,一般json格式的数据无论是键还是值都是用双引号括起来的
var obj = {
name: "小名",
age: 10
};
var json = {
"name": "小明",
"age": "10",
"sex": "男"
};
var key = "name";
console.log(json[key]);
//遍历对象:不能用for循环---无序
//key1是变量,存储的是该对象所有的属性名
for (var key1 in json) {
console.log(key1);//json对象中属性的名字
console.log(json[key1]);//json.key是添加属性
}
//对象中确实有key属性,则可以用对象.key,或者对象[key]