ECMAScript学习笔记(六)——对象的创建

栏目: JavaScript · 发布时间: 7年前

内容简介:JavaScript高级程序设计的第六章。创建ECMAScript对象的一百种方法。除了之前记录过的直接new一个Object然后添加对象的方法,还有对象字面量的方法。ECMAScript还有一百种方法创建一个对象。嗯。

面向对象程序设计

JavaScript高级程序设计的第六章。

创建ECMAScript对象的一百种方法。

创建对象的一百种方法。

除了之前记录过的直接new一个Object然后添加对象的方法,还有对象字面量的方法。ECMAScript还有一百种方法创建一个对象。嗯。

使用Object构造函数和对象字面量的方法创建对象,会产生很多重复代码嗯,并且无法知道对象的类型。

工厂模式

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

var person1 = createPerson("Nicholas", 29, "Software Engineer");
var person2 = createPerson("Greg", 27, "Doctor");

工厂模式能够解决Object构造函数和对象字面量会产生的大量重复代码的问题,但是却无法解决对象识别的问题。我们无法知道一个对象的类型。

构造函数模式

function Person(name, age, job) {
  this.name = name;
  this.age = age;
  this.job = job;
  this.sayName = function() {
    alert(this.name);
  };
}

var person1 = new Person("Nicholas", 29, "Software Engineer");
var person2 = new Person("Greg", 27, "Doctor");

Person()中的代码,没有显式的创建对象,直接将属性和方法赋给了this对象,也没有return语句。

按照惯例,构造函数始终都应该以一个大写字母开头。

要创建Person的实例,就需要使用new操作符。以这种方式调用构造函数会经历四个步骤:

(1) 创建一个新对象

(2) 将构造函数的作用域赋给新对象.this指向了这个新对象

(3) 执行构造函数中的代码

(4) 返回新对象

person1和person2分别保存着Person的一个不同的实例。这两个对象都有一个constructor属性,这个属性指向Person。

person1.contructor == Person;
person1 instanceof object;
person1 instanceof Person;

创建自定义的构造函数,意味着将来可以将它的实例标识为一种特定的类型。

对于这种构建方法,有以下几个特点。

1.将构造函数当做函数

构造函数和普通的函数是一样的。只不过用new操作符来调用的时候,就会变成一个构造函数了。

2.构造函数的问题

构造函数,会使类型的每个方法都要在每个实例上重新创建一遍。(如上述示例中的sayName方法)

所以,每个实例所拥有的方法,是不同的实例。

于是,可以这样创建一个对象:

function Person(name, age, job) {
  this.name = name;
  this.age = age;
  this.job = job;
  this.sayName = sayName;
}

function sayName() {
  alert(this.name);
}

但是这样子,就在全局作用域中创建了一个,只有Person对象才能调用的方法。

十分恶心。于是,这些问题是可以通过原型模式处理掉的嗯。

原型模式


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PCI Express 体系结构导读

PCI Express 体系结构导读

王齐 / 机械工业 / 2010-3 / 55.00元

《PCI Express 体系结构导读》讲述了与PCI及PCI Express总线相关的最为基础的内容,并介绍了一些必要的、与PCI总线相关的处理器体系结构知识,这也是《PCI Express 体系结构导读》的重点所在。深入理解处理器体系结构是理解PCI与PCI Express总线的重要基础。 读者通过对《PCI Express 体系结构导读》的学习,可超越PCI与PCI Express总线......一起来看看 《PCI Express 体系结构导读》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码