JavaScript创建对象的方法有很多,经由过程Object构造函数或对象字面量的方法也可以创建单个对象,显然这两种方法会产生大年夜量的反复代码,并不合适量产。接下来介绍七种异常经典的创建对象的方法,他们也各有优缺点。
- Object.defineProperty(Person.prototype, 'constructor', {
- enumerable: false,
- value: Person
- })
组合应用构造函数模式和原型模式
工厂模式
- function createPerson(name, job) {
- var o = new Object()
- o.name = name
- o.job = job
- o.sayName = function() {
- console.log(this.name)
- }
- return o
- }
- var person1 = createPerson('Jiang', 'student')
- var person2 = createPerson('X', 'Doctor')
工厂模式固然解决了创建多个类似对象的问题,然则没有解决对象辨认问题,即不克不及知道一个对象的类型
- function Person(name, job) {
- this.name = name
- this.job = job
- this.sayName = function() {
- console.log(this.name)
- }
- }
- var person1 = new Person('Jiang', 'student')
- var person2 = new Person('X', 'Doctor')
没有显示的创建对象,应用new来调用这个构造函数,应用new后会主动履行如下操作
- 创建一个新对象
- 这个新对象会被履行[[prototype]]链接
- 这个新对象会绑定到函数调用的this
- 返回这个对象
可以无数次调用这个工厂函数,每次都邑返回一个包含两个属性和一个办法的对象
构造函数模式
应用这个方法创建对象可以检测对象类型
- person1 instanceof Object // true
- person1 instanceof Person //true
然则应用构造函数创建对象,每个办法都要在每个实例上从新创建一次
原型模式
- function Person() {
- }
- Person.prototype.name = 'Jiang'
- Person.prototype.job = 'student'
- Person.prototype.sayName = function() {
推荐阅读
在“暗网(Dark Web)” 上出现了两款针对 Mac 电脑的全新恶意软件,这两款 Mac 恶意软件分别是 MacSpy 和 MacRansom ,并经由过程 Maas 和 Raas 方法进击。两款恶意软件来自一个>>>详细阅读
本文标题:JavaScript创建对象的七种方式
地址:http://www.17bianji.com/lsqh/35768.html
1/2 1