JavaScript 对象

对象:由属性和方法组成,用键值对定义,用于将数据和功能组织到一起

新建对象:

一)new构建:  new  Object ()

二)字面量定义:

var obj = {
    key : value,               //属性
    fn : function(){          //方法
    
    }
}
var obj1 = new Object();    //创建空对象
obj1.name = '张三';            //赋值
obj1.age = 23;
var obj2 = new Object({name:'张三',age:'23'});     //创建空对象的同时,初始化处理
 
var obj3={};             //创建空对象,常用字面量定义

对象引用:

对象名.属性名        对象名.方法名[实参]

对象名[属性名]

console.log(obj4.name);         //console.log(obj3["name"]);  
obj4.fn('Hello','hahahaha');

var str = 'aa';
console.log(obj5[str]);        //当属性名为变量时,只能用[]取值,且不能加""

面向对象(工厂模式):不推荐,不推荐,不推荐!

成批创建相似对象,结构相同

封装函数实现,缺点:不知创建的对象是哪个对象的实例

function createObj(name,age){
    var obj = new Object();
    obj.name = name;
    obj.age = age;
    obj.fn = function(){
        return this.name+this.age;
    }
    return obj;
}
var obj1 = createObj('张三',23);
var obj2 = createObj('李四',24);
console.log(obj1.fn());                   //调方法

构造函数创建类创建对象:推荐,推荐,推荐!

顺序:一)new构造函数,后台执行new Object();

           二)new Object()参数代入构造函数的参数;

           三)执行构造函数的代码;

           四)返回新对象。

function Person(name,age){             //构造函数首字母大写,实际为创建一个类
    this.name=name;                    //this表示实例化后的对象
    this.age=age;
    this.fn = function(){
        return this.name+this.age;
    }
}
var obj1 = new Person('张三',23);
console.log(obj1);                         //Person{name:"张三",age:23,fn:function()}
console.log(obj1.name);                    //张三

console.log(obj1 instanceof Object);                //true
console.log(obj1 instanceof Person);                //true
console.log(typeof obj);                //typeof用来获取data类型,引用类型返回object
var arr = [1,2,3];
console.log(arr instanceof Object);     //引用类型都属于Object,true
console.log(arr instanceof Array);      //true
原文地址:https://www.cnblogs.com/goule/p/13540755.html