对象
对象属于一种复合的数据类型,在对象中可以保存多个不同数据类型的属性。
对象的分类:
- 内建对象.
 - 由ES标准中定义的对象,在任何的ES的实现中可以使用
 - 比如:Math String Number Boolean Function Object...
 - 宿主对象
 - 由JS的运行环境提供的对象,目前来讲主要是指由浏览器提供的对象
 - 比如BOM DOM
 - 自定义对象
 - 由开发人员自己创建的对象
 
对象的基本
对象的基本操作
创建对象
使用
new关键字调用的函数,是构造函数----专门用来创建对象的函数。使用typeof检查对象,返回object- 添加对象属性
obj.xxx = xxx; - 修改对象属性
obj.xxx = xxx; - 删除对象属性
delete obj.xxx; - 查看对象属性
console.log(obj.xxx); 
属性名
- 对象属性名不强制要求遵守标识符的规范
 
- 如果使用特殊属性名,不能采用 
.的方式来操作。需要使用另一种方式 
    对象["属性名"] = 属性值
 存取一致。
- 使用
[]操作属性更加灵活。[]里可以直接传递一个变量,根据变量值读取相应属性。 
var obj = new Object();
obj["233"] = 888;
var n = "233";
console.log(obj[n]);//888属性值
可以是任意的数据类型。也可以是一个对象console.log(obj1.obj.name);in 运算符
 通过该运算符可以检查一个对象中是否含有指定的属性。如果有返回true,没有返回false
语法:"属性名" in 对象
console.log("test" in obj);引用数据类型
保存的是地址,是引用.保存到堆内存中,每创建一个新的对象,就会在堆内存中开辟一个新的空间,而变量保存的是对象的内存地址。如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会收到影响。
基本数据类型【除了object的另外五种】,保存的是 值
var obj1= new Object();
var obj2 = obj1;
obj2 =null ;//这里是obj2的地址值设为null。不改变堆内存中的值
console.log(obj1); //object Objectvar obj1= new Object();
var obj2 = obj1;
obj1.name ="奇奇怪怪" ;
obj1.sex = "男";
obj2.name ="dddd";
//删除,更改都会 对应的变
delete obj2.sex;
console.log(obj1.name); // dddd
console.log(obj2.sex); // undefined
console.log(obj1.miao); //undefined ,对象的属性会输出 未定义。对象字面量
语法:
{属性名:属性值,属性名:属性值..}对象字面量属性名可以加引号也可以不加,建议不加。如果要使用一些特殊的名字,必须加引号。
属性名和属性值是一组一组的名值对结构,名和值之间使用
:链接,多个名值对之间使用,隔开。最后的不加,
var obj = {
    "name":"第三类",
    sex:"男",
    age:33,
    text:{name:"的第三个"} //{}里面的是值。赋给了 t
}以工厂方法创建对象。
为了方便创建重复类型的对象,使用工厂方法。
function createObj(name , gender , age){
    var obj = new Object();
    obj.name = name ;
    obj.gender = gender;
    obj.age = age;
    obj.sayName = function (){
        console.log(this.name);
    }
    return obj;
}
var obj1 = createObj("miao","nan",16);
console.log(obj1);
obj1.sayName();以构造函数的方式批量创建对象
创建一个构造函数,专门用来创建
Person对象。
- 构造函数就是一个普通的函数,创建方式和普通函数
 没有区别。。- 不同的是构造函数
 习惯上首字母大写构造函数和普通函数的区别是调用方式不同
- 普通函数普通调用,构造函数需要使用
 new关键字来调用
构造函数的执行流程
- 立即创建一个新的对象
 - 将新建的对象设置为函数中
 this,在构造函数中可以使用this来引用新建的对象- 逐行执行函数中的代码
 - 将新建的对象作为
 返回值返回使用同一个构造函数创建的对象,我们成为一类对象,也将一个构造函数
称为一个类。 将通过一个构造函数创建的对象,称为该类的
实例
function sayName (name){
    console.log(this.name);
}
function Person(name,gender,age){
    this.name = name ;
    this.gender = gender;
    this.age = age ;
    this.sayName = sayName;
}
var miao = new Person("hero","nan",15);
console.log(miao);
miao.sayName(); /构造函数修改
方法定义在构造函数内部,每执行一次构造函数,就会创建一个对象方法 。 ====>
将对象的方法在全局作用域中定义。
function fun(){
    
}
function Person(name,age){
    this.name =name;
    this.age = age;
    this.sayName = fun;
}
var  per1 = new Person();
var  per2 = new Person();
console.log(per1.sayName == per2.sayName);//true
                            
                            
1 条评论
?语言类评语?