博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
01_对象的创建方法
阅读量:6853 次
发布时间:2019-06-26

本文共 2286 字,大约阅读时间需要 7 分钟。

在平时的JS编码中,我们经常要创建一个对象,创建一个对象的方法有很多种,每一种方法都有自己的优缺点,这里全面剖析一下创建对象常用的6种方法,以及罗列他们的优缺点以供选择。

1.Object构造函数的方法;

2.对象字面量的方法;

3.工厂函数的模式;

4.自定义构造函数的方法;

5.使用原型的方法;

6.自定义构造函数和原型组合的方法;

 

01_Object构造函数的方法创造一个函数:(先创建一个空的对象,在手动添加属性和方法);

  var person = {} ;    //或者:var person = new Object();   person.name = 'Tom';    person.setName = function(name){
this.name = name};  alert(person.name);   // 输出 Tom  person.setName('Jack');  alert(person.name);  //输出 Jack

     缺点:代码数量过多;

    适用于:对象的属性起始不确定;

02_使用对象字面量的方法创造函数:(创造对象的同时指定属性和方法);

 var person = {    name: 'Tom',    setName: function(name){
this.name = name;}  }  alert(person.name);  //输出Tom  person.setName('Jack');  alert(person.name);  //输出Jack

 

     缺点:创建多个同类对象时有重复代码;

    适用:提前知道属性值的对象;

03_工厂函数的模式创建一个人的对象;(把创造一个人的对象封装到一个工厂函数中,直接调用就可以产生大量的人);

 function createPerson(name){    var person = {      name: name,      setName: function(name){
this.name = name;}    }    return person;  }  var person1 = createPerson('Tom');  alert(person1.name);  //输出Tom  person1.setName('Jack');    alert(person1.name);  //输出Jack  var person2 = creatPerson('Lucy');  //调用工厂函数创造第二个人的对象,仅调用即可;

 

     缺点:对象没有具体的类型,就是Object,可以与下面的方法对比;

    优点:解决了字面量方法的问题,可以大量生产对象;

4_使用自定义构造函数的方法创造一个人的对象;

 

function Person(name){        this.name = name ;        this.setName = function(){            this.name = name;        }    }    var person = new Person('Tom');    alert(person.name);    //输出Tom    person.setName('Jack');    alert(person.name);    //输出Jack

 

    缺点:数据没有复用,会占用更多的空间;

    优点:相对于工厂函数方法,创造的对象都有各自共同的对象名:Person;

5_使用原型的方法创造一个人的对象;

 

function Person(){} Person.prototype.name = ''; Person.prototype.setName = function(name){
this.name = name;}; var person = new Person();  //创建对象时不能直接指定属性; person.name = 'Tom'; alert(person.name); //输出Tom person.setName('Jack'); alert(person.name);  //输出Jack

 

    缺点:创建对象时不能直接指定属性,需要重新添加,非常麻烦;

     优点:解决了使用自定义构造函数的方法存在的数据不能复用的问题;

 

 

 6_使用自定义构造函数和原型组合的方法创造对象,可以结合4、5方法的优点,推荐在一些较复杂的对象中使用;

 

function Person(name){
this.name = name } Person.prototype.setName = function(name){
this.name=name; } var person = new Person('Tom'); //输出Tom alert(person.name); alert(person.setName('Jack')); //输出Jack

 

    优点:结合了4、5的优点,即能复用数据,又能在创建函数的时候添加属性,同类对象的公共方法保存在父对象的原型中,方便调用;在实际中最常使用。

 

转载于:https://www.cnblogs.com/dhai/p/6613126.html

你可能感兴趣的文章
C# Directory.GetFiles()获取文件时如果是根目录时有隐藏文件则报错的处理
查看>>
POJ 3320 (尺取法+Hash)
查看>>
名校公开课网站汇总
查看>>
CodeForces 620E New Year Tree
查看>>
Django 0.1
查看>>
11.扩展:信息检索技术
查看>>
SQL Server2008中删除重复记录
查看>>
CS184.1X 计算机图形学导论 作业0
查看>>
牛人博客
查看>>
Unique Binary Search Trees II
查看>>
CSS的基本语法
查看>>
设计模式(一)_单例模式
查看>>
对于新手而言,PHP开发选择什么开发工具,及PhpStorm的特性和Git集成要点
查看>>
ebay 如何获取用户token
查看>>
LeetCode:Implement Queue using Stacks
查看>>
php 操作数组 (合并,拆分,追加,查找,删除等)
查看>>
CS50-线性搜索|二进制搜索
查看>>
iOS 图文混排 链接 可点击
查看>>
poj 1240
查看>>
UI设计时要注意的几个方面
查看>>