[Javascript学习记录]1.对象_创建对象的方法

原创 2015年11月21日 13:12:51
对象可以理解为一个名值对,其中的值可以是数据和函数。有多种方法可以创建对象,最简单的就是创建一个Object实例,再为其添加属性与方法。如同:
var person = new Object();
person.name = "zhangsan";
person.age = "19";
person.job = "student";
person.sayName = function(){
          alert(this.sayName);
};

用对象字面量创建时如下:

var person = {
name : "zhangsan",
age : 19,
job : "student",
sayName : function(){
          alert(this.sayName);
}
<p>};</p>

但是需要创建多个对象时,这种方法会显得过于繁琐,于是有了以下的方法:

1.工厂模式(但是Javascript中无法创建类):抽象了创建具体对象的过程,解决了创建多个相似对象的问题,但是却无法知道一个对象的类型

function createPerson(name,age,job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
alert(this.sayName);
};
return o;
}

var person1 = createPerson("zhangsan",19,"student");
var person2 = createPerson("lisi",29,"teacher");


2.构造函数模式:创建一个自定义的构造函数,并定义对象类型的属性与方法,创建实例时必须使用new操作符:

function Person(name,age,job){
   this.name = name;
   this.age = age;
   this.job = job;
   this.sayName = sayName;
}
function sayName(){
   alert(this.name);
}
var person1 = new Person("zhangsan",19,"student");
var person2 = new Person("lisi",29,"teacher");

3.构造函数模式与原型模式的混合:使用最广泛的方法,既可以保留实例的独立属性,又可以共享对方法的引用:

function Person(name,age,job){
     this.name = name;
     this.age = age;
     this.job = job;
     this.friends = ["wanger","zhangwu'];
}

Person.prototype = {
constructor : Person,
sayName : function(){
    alert(this.name);
}
}

var person1 = new Person("zhangsan",19,"student");
var person2 = new Person("lisi",29,"teacher");

person1.friends.push("chengyi");
alert (person1.friends); //"wanger,zhangwu,chengyi"
alert (person2.friends;) //"wanger,zhangwu"
alert (person1.sayName === person2.sayName);  //true
可以看到,对person1添加了新的朋友“chengyi”,但是不会对person2产生影响,而共享的“wanger,zhangwu”则都保留了下来。同时,也可以共享原型中的sayName方法。

此外还有动态原型模式,寄生构造函数模式,稳妥构造函数模式等。不作记录,需要时再查找。

版权声明:本文为博主原创文章,未经博主允许不得转载。

JavaScript中的对象,如何创建对象,创建对象的7种模式

ECMA-262把对象定义为:”无需属性的集合,其属性可以包含基本值、对象或者函数。”严格来讲,这就相当于说明对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。正...
  • u014346301
  • u014346301
  • 2016年08月14日 16:33
  • 9358

JavaScript如何创建一个对象

我们可以利用JavaScript的语法特征,以类的思想来创建对象。 方法一:原始方法 代码如下: var obj = new Object(); obj.name = "Kitty"...
  • u010297791
  • u010297791
  • 2017年02月19日 10:04
  • 954

JavaScript创建对象的三种方法

1. var person = new Object();这行代码创建了Object引用类型的一个新实例,然后把该实例对象保存在变量person中。使用的构造函数是Object,它只为新对象定义了默认...
  • u010552788
  • u010552788
  • 2016年03月10日 18:55
  • 2001

JavaScript基础——面向对象的程序设计(一)创建对象的几种方式总结

简介 面向对象(Object-Oriented, OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。前面提到过,ECMAScript中没有类的概念,因...
  • Goskalrie
  • Goskalrie
  • 2016年06月03日 13:09
  • 3416

JS创建对象几种不同方法详解

1、工厂模式弊端:没有解决对象的识别问题,即怎么知道一个对象的类型。 2、构造函数模式 与工厂模式相比: 1、没有显式的创建对象 2、直接将属性和方法赋给了this对象 3、没有return...
  • liuyan19891230
  • liuyan19891230
  • 2016年02月29日 14:28
  • 6378

JavaScript中String对象常见方法及属性

JavaScript String对象简介在JavaScript,基本数据类型有Number型、String型、Boolean型、Undefined型、Null型、Function型等。String对...
  • a153375250
  • a153375250
  • 2016年03月30日 12:57
  • 1930

javascript 创建对象,访问对象的属性,访问对象的方法。

/* 1.在 JavaScript中,几乎所有的事物都是对象。 2.JavaScript 语句向浏览器发出的命令。语句的作用是告诉浏览器该做什么。 ...
  • zhanggaofeixy
  • zhanggaofeixy
  • 2016年08月07日 20:49
  • 1614

访问javascript对象的属性和方法

之前就没认真看过,一直就知道定义一个对象,然后用‘.’操作来访问属性和方法。今天突然看见还有另外一种方法,就认真看了下。 var obj={}; var arr=[]; arr[0]=1,arr...
  • angeljsl
  • angeljsl
  • 2015年10月30日 16:46
  • 1142

javascript日期对象Date对象方法

Date() 返回当日的日期和时间。 getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。 getM...
  • qq_30100043
  • qq_30100043
  • 2016年12月02日 18:28
  • 381

Javascript基于对象基础

Java基于对象基础 基于对象和面向对象的区别 JavaScript设计者想把JavaScript语言设计成基于对象(object-based)的语言,他想把这个与面向对象(object-orie...
  • q547550831
  • q547550831
  • 2015年12月24日 12:47
  • 2233
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Javascript学习记录]1.对象_创建对象的方法
举报原因:
原因补充:

(最多只允许输入30个字)