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

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

内容简介: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对象才能调用的方法。

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

原型模式


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

查看所有标签

猜你喜欢:

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

跨平台桌面应用开发:基于Electron与NW.js

跨平台桌面应用开发:基于Electron与NW.js

【丹】Paul B. Jensen / Goddy Zhao / 2018-3 / 99

《跨平台桌面应用开发:基于Electron与NW.js》是一本同时介绍 Electron和 NW.js的图书,这两者是目前流行的支持使用 HTML、CSS 和 JavaScript 进行桌面应用开发的框架。书中包含大量的编码示例,而且每个示例都是五脏俱全的实用应用,作者对示例中的关键代码都做了非常详细的解释和说明,可让读者通过实际的编码体会使用这两款框架开发桌面应用的切实感受。除此之外,在内容上,......一起来看看 《跨平台桌面应用开发:基于Electron与NW.js》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具