美文网首页前端乱弹99日
前端乱弹99日之创建对象的四种写法

前端乱弹99日之创建对象的四种写法

作者: 业余马拉松选手 | 来源:发表于2018-05-13 23:44 被阅读5次

又到了一周的这个“交”作业的时间,今天就“文绉绉”一把,谈谈“茴香豆”的“茴”字的四种写法吧~~
哈哈,不对不对,是在JavaScript里,创建对象的四种写法,对自己学习前端的一个小小的总结。

第一种方法:字面量法【JSON法】
这种写法其实最简单,在JavaScript创建一个对象,代码如下:

var house = {};
console.log(typeof(house));

这时,在控制台上输出的就是object,嗯,没错,在JavaScript里创建一个对象就是这么“随意”。
好,接着我们看一个稍微复杂点的对象吧

var house = {
    price:8000000,
    area:100,
    address:{
      city:"上海",
      district:"浦东新区",
      street:"世纪大道"
    }
};
console.log(house.price);
console.log(house.address.district);

这里,我们定义了一个house对象,然后里面其实还嵌套了一个address的对象。我分别可以获取house对象里的price属性。当然我也可以获得addrees这个属性下的指。
这里,我们可以暂时将JavaScript里的对象看成key-value的键值对。其中值也可以继续是一个对象(肯定也是一个键值对)。
这么看下上面这段代码是否就更好理解了些?
好,那么我们继续再丰富下这段代码

var house = {
    price:8000000,
    area:100,
    address:{
      city:"上海",
      district:"浦东新区",
      street:"世纪大道"
    },
    info:function(){
      console.log("这套房子面积为:"+this.area+",价格为"+this.price+"元");
    }
};
console.log(house.price);
console.log(house.address.district);
house.info();

如果你有一点点编程基础,可以看到,我为house这个对象又定义了一个方法,用于输出这套房子的一些基本信息,其中要特别注意下,这里输出的area和price属性,是属于当前这个house对象的,需要增加this这个关键字哦。

嗯,至此这种创建对象的方法也就介绍的差不多了,对于一个后端狗来说,看下上面那个对象的定义,就是是一个JSON字符串?嗯,对的呢,你想下JSON的全程是JavaScript Object Notation嘛。

第二种方法:创建对象法
这里我们继续以房子来举例,重新实现一下上面这段代码。

var house = new Object();
house.price = 8000000;
house.area = 100;
var address = new Object();
address.city = "上海";
address.district = "浦东新区";
address.street = "世纪大道";
house.address = address;
house.info = function(){
  console.log("这套房子面积为:"+this.area+",价格为"+this.price+"元");
};

这次,我们是直接用JavaScript提供的new Object()这个语法来完成创建一个对象的,然后本身语言是支持对这个对象增加、删除属性、方法。同时也是支持点语法的,对于一个后端狗来说,相对第一种,也许这种方法还更好理解一些吧?但就是写起来有点太麻烦,而且还不够通用似的?因为这里直接就是对象的概念,而JavaScript真的没有类这个概念吗?嗯,好吧,这是一个“更好”的话题,可以足以开一篇文章都未必讲的清楚呢(好吧,我承认是我比较渣啦~),那么回过头来,我们接着还有一种实现方法,看起来有那么一点点像“类”的意思呢。
第三种方法:构造函数法

嗯,我们继续重新实现一下上面那段示例代码:

function Address(city,district,street){
    this.city = city;
    this.district = district;
    this.street = street;
}
function House(price,area,address){
    this.price = price;
    this.area = area;
    this.address = address;
    this.info = function(){
        console.log("这套房子面积为:"+this.area+",价格为"+this.price+"元");
    }
}
address = new Address("上海市",“浦东新区”,"世纪大道");
house = new House(8000000,100,address);
house.info();

这里是“定义”好了address和house这两个对象的蓝图,然后用new这个关键字去最终“实现”完成,看来还真是挺像定义了一个类吧?这种方法看起来是不是更顺眼了一点呢?

嗯,最后为了凑齐“茴香豆”的四种写法,就又拼了一种利用工厂模式的【嗯,是的,这次我们没有讨论原型,不过请放心,原型是一定会说到的,哈哈哈】

第四种方法:工厂模式法
还是老规矩,我们继续重新实现一遍这段代码:

function createHouse(price,area,city,district,street){
    var house = new Object();
    house.price = price;
    house.area = area;
    var address = new Object();
    address.city = city;
    address.district = district;
    address.street = street;
    house.address = address;
    house.info = function(){
      console.log("这套房子面积为:"+this.area+",价格为"+this.price+"元");
    };
    return house;
}
var house = createHouse(8000000,100,"上海","浦东新区","世纪大道");
house.info();

嗯,上面这种实现的方式,是利用了工厂模式,“封装”了一个房子对象的创建过程,至于内部实现,这里还是利用了new Object() 这种语法,那么是否还有其他的方法?嗯,肯定还是有的,“茴”字的写法也还真不止四种,那么实际在写代码的过程中,应该是用哪几种呢?嗯,留给你和我一起思考~

相关文章

  • 前端乱弹99日之创建对象的四种写法

    又到了一周的这个“交”作业的时间,今天就“文绉绉”一把,谈谈“茴香豆”的“茴”字的四种写法吧~~哈哈,不对不对,是...

  • 常用的对象字面量的增强写法

    对象的增强写法: 以前创建对象的写法:通过new一个对象实例。 现在创建对象直接用{ }赋值,这种写法很常见,那什...

  • 小女孩行走,函数式写法 与对象(构造函数)写法

    小女孩行走,函数式写法,只能创建一个,不利于创建多个 对象(构造函数)写法 对象写法--优化原型部分,原型部分合并...

  • 字面量方式及内置构造函数创建对象

    创建对象的几种方式 字面量方式创建对象 基本写法 ①字面量的方式来创建对象示例 存在的问题 [01] 代码复用性差...

  • JS Date对象

    创建 Date 对象: new Date();以下四种方法同样可以创建 Date 对象: Date 对象属性 Da...

  • 16、Java创建对象有几种方式?

    Java创建对象有几种方式? java中提供了以下四种创建对象的方式: 1、new创建新对象; 2、通过反射机制;...

  • ThreadLocal内存泄漏问题

    java对象的四种引用方式 对象的引用方式分:强、软、弱、虚四种 强引用 普通的写法即强引用 当GC回收时,拥有强...

  • Java创建对象的方式

    原先了解的Java创建对象有四种方式: (1)用new 语句创建对象,这是最常用的创建对象方法。 (2)运用反射手...

  • js对象的创建

    一、创建对象的方法 阅读犀牛书(《javascript权威指南》),书中将js创建对象的方法分为四种,对象字面量、...

  • vue实例

    创建vue对象实例: vue3的写法: let ap...

网友评论

    本文标题:前端乱弹99日之创建对象的四种写法

    本文链接:https://www.haomeiwen.com/subject/ezdrdftx.html