JavaScript 创建对象的方式

本文主要参考了阮一峰的《Javascript 面向对象编程(一):封装

1、原始方法(也是最简单的方法)

1 var p1 = {};
2 var person = new Object();

上面两行代码的效果是一样的。

1 var p1 = {};
2 p1.name = ‘张三‘;
3 p1.age = 23;
4
5 var p2 = {};
6 p2.name = ‘翠花‘;
7 p2.age = 18;

2、原始方法升级版

1 function Person(name, age) {
2     return {
3         name: name,
4         age: age
5     }
6 }
7 var p1 = Person(‘张三‘, 23);
8 var p2 = Person(‘翠花‘, 18);

这种方法创建的对象没有任何联系,它的本质和方法1没什么区别。

3、构造函数模式(使用this)

1 function Person(name, age) {
2     this.name = name;
3     this.age = age;
4 }
5 var p1 = new Person(‘张三‘, 23);
6 var p2 = new Person(‘翠花‘, 18);

上面的代码实例的constructor属性指向他们的构造函数。

1 p1.constructor == Person //true
2 p2.constructor == Person //true
3
4 p1 instanceof Person //true
5 p2 instanceof Person //true

并且用instanceof验证确实是Person的实例。

构造方法的问题

1 function Person(name, age) {
2     this.name = name;
3     this.age = age;
4     this.takeBus = function() {
5         alert(‘Take a bus.‘);
6     }
7 }
8 var p1 = new Person(‘张三‘, 23);
9 var p2 = new Person(‘翠花‘, 18);

对上面的方法增加了一个【takeBus】方法之后,表面上看没什么问题,但是:

1 p1.takeBus == p2.takeBus //false

说明p1和p2分别有了一个【takeBus】这个方法,即【takeBus】这个方法并没有公用。造成资源浪费。那么,如何公用呢?

4、Prototype模式

 1 function Person(name, age) {
 2     this.name = name;
 3     this.age = age;
 4 }
 5
 6 Person.prototype.takeBus = function() {
 7     alert(‘Take a bus.‘);
 8 }
 9
10 var p1 = new Person(‘张三‘, 23);
11 var p2 = new Person(‘翠花‘, 18);
12
13 p1.takeBus == p2.takeBus // true

可以看到使用prototype这种方法使得【Person】实例化得到的对象【takeBus】方法是同一个方法。

时间: 2024-10-12 08:21:37

JavaScript 创建对象的方式的相关文章

javascript创建对象的方式

一.字面量 字面量也称单例模式 var person = { username: 'wuyushuo', age: 22, say: function() { console.log('hello') }, getname: function() { return this.username; }, getage: getage //在对象外定义,不定义会报错 } // 对象外定义对象中的方法 function getage() { return person.age } // 再次创建新的空间

JavaScript 创建对象的七种方式

转自:xxxgitone.github.io/2017/06/10/JavaScript创建对象的七种方式/ JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以创建单个对象,显然这两种方式会产生大量的重复代码,并不适合量产.接下来介绍七种非常经典的创建对象的方式,他们也各有优缺点. 工厂模式 1 function createPerson(name, job) { 2 var o = new Object() 3 o.name = name 4 o.job

补充:JavaScript 创建对象的七种方式

JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以创建单个对象,显然这两种方式会产生大量的重复代码,并不适合量产.接下来介绍七种非常经典的创建对象的方式,他们也各有优缺点. 工厂模式 1 function createPerson(name, job) { 2 var o = new Object() 3 o.name = name 4 o.job = job 5 o.sayName = function() { 6 console.log(this.na

javascript 中九种创建对象的方式

javascript 中对象的简介: ECMA-262 把对象的定义为:"无序属性的集合,其属性可以包含基本值,对象或者函数."严格来讲,这就相当于说对象是一组没有特定顺序的值.对象的每个属性或方法都有一个名字,而每个名字都映射到一个值.正是因为这样,我们可以把 javascript 中的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数. javascript 中九种创建对象的方式: 1.原生 Object 构造函数 2.对象字面量表示法 3.工厂模式 4.构造函数模式 5

javascript创建对象的一些方式

通过创建一个Object实例 var person = new Object(); person.name = "zhouquan"; person.age = 21; person.sayName = function(){ console.log(this.name); }; person.sayName();//zhouquan 对象字面量方式 var person = { name: "zhouquan", age: 21, sayName:function

Javascript 创建对象方法的总结(每天一些学习真的很快乐)

使用Javascript创建对象的方法有很多,现在就来列举一下: 1. 使用Object构造函数来创建一个对象,下面代码创建了一个person对象,并用两种方式打印出了Name的属性值. var person = new Object(); person.name="kevin"; person.age=31; alert(person.name); alert(person["name"]) 2. 使用对象字面量创建一个对象:不要奇怪person["5&

Javascript 创建对象方法的总结

最近看了一下<Javascript高级程序设计(第三版)>,这本书很多人都推荐,我也再次郑重推荐一下.看过之后总得总结一下吧,于是我选了这么一个主题分享给大家. 使用Javascript创建对象的方法有很多,现在就来列举一下: 1. 使用Object构造函数来创建一个对象,下面代码创建了一个person对象,并用两种方式打印出了Name的属性值. var person = new Object(); person.name="kevin"; person.age=31; a

【译】JavaScript 创建对象: 方法一览与最佳实践

本文是我在众成翻译上认领并翻译的:JavaScript 创建对象: 方法一览与最佳实践 在JavaScript中“创建对象”是一个复杂的话题.这门语言提供了很多种创建对象的方式,不论新手还是老手都可能对此感到无所适从,不知道应该选择哪一种.不过,尽管创建对象的方法很多,看上去语法差异也很大,但实际上它们的相似性可能比你所以为的要多.本文将带领你踏上一段梳理对象创建方法的旅程,为你揭示不同方法之间的依赖与递进关系. 对象字面量 我们的第一站毫无疑问就是创建对象最简单的方法,对象字面量.JavaSc

JavaScript创建对象时常用的设计模式

转自:http://www.cnblogs.com/shouce/p/5488101.html 一.工厂模式 function person (name,age) { var p=new Object(); p.name=name; p.age=age; p.showMessage=function(){ console.log("name:"+this.name+" age:"+this.age); } return p; } var p1=person(&quo