介绍
本篇文章给大家分享的是有关利用JavaScript创建一个自定义对象,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
1,创建一个对象实例
var person =, new 对象(); 时间=person.name “rose"; 时间=person.age 18; 时间=person.job “actor"; 时间=person.sayName function (), { ,console.log (this.name); }; console.log(人);
2,对象字面量
var person =, { ,名字:“rose", ,年龄:18岁 ,工作:“actor", ,sayName: function (), { ,console.log (this.name); }, }; console.log(人);
上面两种方式是创建对象的两种基本方式,他们的原型就是对象
3,工厂模式
function createPerson(姓名、年龄、演员){ ,var person =, new 对象();=,person.name “rose";=,person.age 18;=,person.job “actor";=,,person.sayName  function (), { console.log才能(this.name); ,}; return 人 } console.log (p1 instanceof 对象);//真实的 console.log (p1 instanceof createPerson);//假
从上面代码中我们可以看出来,工厂模式实际上就是借助函数,内部返回使用第一种方式(新对象())创建的对象。
优点:可以很方便的创建相似对象。
缺点:没有解决对象识别的问题,即怎样知道一个对象的类型。
4,构造函数方式
function 人(名字,年龄,工作),{=,this.name 名称;=,this.age 年龄;=,this.job 工作;=,,this.sayName  function (), { ,console.log (this.name); ,}; } var p =, new 人(“rose",, 18日,“actor"); console.log (p instanceof 人);//真实的 console.log (p instanceof 对象);//真正的
构造函数可以创建特定类型的对象,像对象,数组这样的原生构造函数,在运行时会自动出现在执行环境中。
构造函数模式与工厂模式的不同之处为:
- <李>
没有显式得创建对象,
李> <李>直接将属性和方法赋值给了这对象
李> <李>没有返回语句
构造函数方式创建对象必须使用新的、操作符,会经历下面四个步骤
- <李>
创建一个对象
李> <李>这指向这个新创建的对象
李> <李>执行代码
李> <李>返回这个对象
构造函数方式的优点:以构造函数创建的对象,在其原型上都会有一个构造函数属性,这个属性指向构造函数人而这个属性最初是用来标识数据类型的。
忧化
function 人(名字,年龄,工作),{=,this.name 名称;=,this.age 年龄;=,this.job 工作;=,,this.sayName  sayName; } function sayName () { ,console.log (this.name); } var p =, new 人(“rose",, 18日,“actor");
缺点:当对象需要很多方法的时候,就会定义多个全局作用域下的函数,这样一来,不仅毫无封装性可言,而且让全局作用域下的函数过多。
5,原型模式
function 人(),{} 时间=Person.prototype.name “rose"; 时间=Person.prototype.age 18; 时间=Person.prototype.sayName function (), { ,console.log (this.name); }; var p =, new 人(); console.log (p);
说到原型对象就要说一下原型链,原型与原型链对象如下图所示:
我们可以看的到,在原型上面定义的所有属性都是在其原型对象上。在原型对象上的属性与方法属于公有属性和公有方法。其所有实例都可以访问到。
6, * *组合使用构造函数模式和原型模式* *最常用
function 人(姓名、,年龄),{=,this.name 名称;=,this.age 年龄; } 时间=Person.prototype.sayName function (), { ,console.log (this.name); }; var p =, new 人(“rose",, 18); console.log (p);
对象在引用其属性的时候,会按照原型链去查找,直到查找到对象的原型。