javascript的对象

JavaScript 中的所有事物都是对象:字符串、数字、数组、日期,等等。
在 JavaScript 中,对象是拥有属性和方法的数据。

一.对象的类型

  • 本地对象:就是ECMA定义好的一些对象,包含Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各种错误类对象Error、EvalError、RangeError、ReferenceError、SyntaxError和TypeError。
  • 内置对象:只有Global和Math两个对象,其实可以理解为是包含在本地对象中的。
  • 宿主对象:需要依赖浏览器等宿主环境的对象,简单点就是我们自定义的各种对象,包括BOM和DOM对象。

二.对象的创建、继承

  1. 字面量形式
    var obj = {name:"hello",age:18}

  2. 使用new关键字
    var obj = new object() obj.name = "hellow"; obj.age = 19;

  3. 使用ES5的object.create()

object.create()是一个静态的函数,参数一:要继承的对象;参数二:可选,用以对对象的属性做进一步的描述

var obj = object.creat({name:"hello",age:"20"}) //obj继承了name和age属性

4.工厂模式创建
function creatobj (name,age){ var obj = new object(); obj.name = name; obj.age = age; return obj; } var o1 = creatobj("hello",21); var o2 = creatobj("hello",22);
优点:能够重复创建同类对象,提高效率
缺点:消耗内存

5.构造函数创建
function Person(name,age) { this.name = name; this.age = age; } var per1 = new Person("hello",23); var per2 = new Person("world",24);

6.原型模式
function Person(name,age){ this.name = name; this.age = age; } Person.prototype.showName =function(){ alert(this.name); } var pe = new Person("pro",25); pe.showName(); //25

7.混合模式

三.属性查询

var obj = {name:"hello"}

  1. 使用in运算符
    "name" in obj;
    如果对象的自有属性或者继承属性包含该属性就返回true;否则返回false。

2.hasOwnPreperty()
obj.hasOwnPrerperty("name");
如果是对象的自有属性就返回true;否则false

3.propertyIsEnumerable()
obj.propertyIsEnumerable("name" )
只检测这个属性是自有属性并且是可枚举的时候才返回true;否则返回false

4.使用"!=="
obj.name !== undefined //true 存在该属性;false 不存在该属性
但是存在一种特殊的场景只能使用in运算符而不能使用!==;如果var o = {x:undefined}的时候

四.属性删除

detele obj.name;

你可能感兴趣的:(javascript的对象)