对象是类的实例,万事万物皆对象。
类式对象的类型,具体到某一个事物
对象是带有属性和方法的特殊数据类型。
创建对象
1.直接量创建对象
var object = {}
2.使用new关键字创建对象
var object = new Object()
对象属性查询
1.点语法: 对象.属性
2.[]: 对象[属性]
工厂模式
function fn(){
var obj = new Object();
obj.name = "张三";
obj.age = 20;
obj.sex = "男";
return obj;
}
var p1 = fn();
var p2 = fn();
工厂模式带参数:
function fn(a,b,c){
var obj = new Object();
obj.name = a;
obj.age = b;
obj.sex = c;
return obj;
}
var p1 = fn("张三",20,"男");
var p2 = fn("李四",30,"女");
构造函数
函数名首字母大写 使用this关键字进行属性赋值
没有return返回值 调用时用new关键字
原型
每个函数都有一个原型属性,叫做prototype
原型是一个对象,用它可以实现属性的继承
prototype 这个属性的属性值是一个对象(属性的集合),默认的只有一个叫做constructor的属性指向这个函数本身。
每一个实例对象都有一个proto指针,指向构造函数的prototype原型
原型对象的作用就是定义所有对象实例所共享的属性和方法
hasOwnProperty() 判断一个属性是本地属性(true)还是原型对象属性(false)
in操作符 检测对象是否包含某个属性,可以是本地属性也可以是原型属性
原型链
当访问一个对象的属性和方法是,如果当前对象拥有,那么直接调用,如果当前对象没有,那么向他的父级查找,如果父级有,那么直接调用,否则继续向上查找,直到找到object基类为止,如果最终都没有找到就返回undefined
确定原型和实例的关系:可以通过两种方式来确定原型和实例的关系
1.操作符 instanceof
2.isPrototypeof()方法