对象,在Java当中用的最多的,但是js也有这个概念。

  有了对象,处好了就可以结婚了(请容我慢慢道来别不信,处好了当然可以结婚)

  来来,我们先创建一个对象,

  创建对象的方法有各种各样的,你找对象的地方也不是各个地方嘛...咖啡厅、商城、甚至公交车上(神人)

  工厂方法:

  function girlFriend(){

    var obj=new obj;

    obj. name="aaa";

    obj.age=18;

    obj.getName=function(){

     return  this.name;

    }

  return obj;

  }

  构造函数模式:

  function girlFirend(){

    this.name="lick";

    this.age=18;

    this.getName(){

      return this.name

    }

  }

  是不是看起来不错啊,我们分析一下两个女票的异同点:

  相同点:都可以创建一个女票(废话)

  不同点:工厂女票每次都要在方法当中新建一个对象,而构造女票不需要。

      工厂女票显示创建了对象,而构造女票并没有。

      工厂女票返回了一个对象,但是构造函数并没有返回。

  构造女票也遇到了点问题:每一次创建对象对需要创建一个新的方法,相当与每个对象都有自己的方法,这不科学我们需要的是每个对象都有同一个方法,这个月的话解决方案就是使用一个外部的全局函数,但是接下来又出现问题了,那就是函数的隐蔽性又没了,完全暴露在外,所以有以下创建女票的方式。

  另一种遇到女票的方式:

  原型模式

   function girlFriend(){

    girlFriend.prototype.name="lick";

    girlFriend.prototype.age=18;

    girlFriend.prototype.getName(){

       return this.name

    }

  }

  var gf=new girlFriend();

console.log(gf.age);

 但是这个女票也会出现问题!

  这个忘记了引用类型的问题,比如Arry()

 function girlFriend(){

    girlFriend.prototype.name="lick";

    girlFriend.prototype.age=18;

    girlFriend.prototype.arr=[1,2,3];

    girlFriend.prototype.getName(){

       return this.name

    }

  }

出现了两个女票分别向arr[]插入数值

var gf=new girlFriend();

gf.arr.push(4)//arr[1,2,3,4]

var gf1=new girlFriend();

gf.arr.push(4);//arr[1,2,3,4,4]

所以这个不可取(娶)啊。

接下来介绍一个更好一点的妹子,也是成功率和好评率最高的妹子给你。

构造函数和原先模式混合:

要有这样一个思想,那就是构造函数用来做属性的定义,原型用来做方法

function girlFrind(name,age){

  this.name=name;

  this.age=age;

  this.arr=[1,2,3,4];

}

girlFriend.prototype={

  constructor:girlFriend,

  getName:function(){

    return this.name

  }

}

var gf=new girlFriend("lick",18);

gf.arr.push(5);//arr=[1,2,3,4,5];

var gf1=new girlFriend("lick1",18);

gf1.arr.push(6);//arr=[1,2,3,4,6];是不是很神奇

而且有一点就是调用的gf.getName===gf1.getName

 

JS 对象的更多相关文章

  1. JS对象继承篇

    JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person() ...

  2. JS 对象封装的常用方式

    JS是一门面向对象语言,其对象是用prototype属性来模拟的,下面,来看看如何封装JS对象. 常规封装 function Person (name,age,sex){ this.name = na ...

  3. JSON字符串和JS对象之间的转换

    JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象  JSON字符串 str JSON.parse(str) eval(str) eva ...

  4. js 对象的_proto_

    js 对象呢,有个属性叫_proto_,以前没听说过,也没关注,最近看这个原型,就被迫知道了这个东西,js 这里面的东西,真是规定的很奇怪,具体为啥也不知道,就测试发现的,对象的_proto_属性,和 ...

  5. js对象/数组深度复制

    今天碰到个问题,js对象.数组深度复制:之前有见过类似的,不过没有实现函数复制,今晚想了一下,实现代码如下: function clone(obj) { var a; if(obj instanceo ...

  6. js对象的深度克隆

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. js对象详解

    js自定义对象 一,概述 在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 目前在J ...

  8. js对象常用2中构造方法

    //js 对象的构造方法通常有2中情况: //第一种是通过json对象构造 var persion={ name:"孙悟空", age:40, eat:function () { ...

  9. JS对象复制

    在JavaScript很多人复制一个对象的时候都是直接用"=",因为大家都觉得脚本语言是没有指针.引用.地址之类的,所以直接用"="就可以把一个对象复制给另外一 ...

  10. js对象私有变量公有变量问题

    0 js对象私有变量公有变量问题5 小弟初学JS面向对象编程 现有一问题 请教各位大虾: Person=function (){ //私有变量定义 var name; vae age; var Ale ...

随机推荐

  1. Android深度探索(卷1)HAL与驱动开发

    第一章 介绍Android驱动开发和移植技术 主要对android和linux做了总体的介绍,让我们有了个感性的认识. 一.Android的四层系统架构: a) Linux内核:Android是基于L ...

  2. S5PV210之GPIO模拟I2c时序之pcf8591与at24xx linux3.0.8驱动

    目录:一. 说明 二. 驱动程序说明及问题 三. 案例一       四. 案例二 一. 说明 mini210开发板上带了at24c08, 看了linux内核自带的at24.c的驱动程序,编译下载到看 ...

  3. Github Atom 1.12.0-beta3 发布

    Github Atom 1.12.0-beta3 发布了,Atom 是 Github 专门为程序员推出的一个跨平台文本编辑器.具有简洁和直观的图形用户界面,并有很多有趣的特点:支持CSS,HTML,J ...

  4. 当你刷新当前Table时,刷新后如何回到你上一次所在位置呢?

    第一: 在你刷新前保存所在位置的行号 procedure XXXClass.LockPositionEx;begin DisableControls; FHistoryRecNo := 0; FHis ...

  5. C#中Invoke的用法(转)

    在多线程编程中,我们经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法是错误的做法,Invoke 和 BeginInvoke 就是为了解决这个问题而出现的,使你在多线程中安全的更新界 ...

  6. Spring中的IOC\DI\AOP等概念的简单学习

    IoC(Inversion of Control,控制反转).这是spring的核心,贯穿始终, 所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系.Spr ...

  7. 二叉树的实现与一些基本操作(C++环境)

    #include<cstdio>#include<cstdlib>#include<iostream>#include<cstring>using na ...

  8. Ubuntu 手工挂载硬盘

    首先我们得到到/dev/sda3这个分区的UUID,使用以下命令: sudo blkid /dev/sda3 结果如下: 然后,我们按照/etc/fstab文件中的格式添加一行如下内容: UUID=9 ...

  9. MySql的max_connections和max pool的设置

    这几天工作当中,在使用mysql数据库的时候,碰到了too many connections的问题和timeout expired的问题,经过尝试,稍作总结,希望能够帮到需要的朋友; 在测试当中发现, ...

  10. 转发 java数据结构之hashMap详解

    概要 这一章,我们对HashMap进行学习.我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap.内容包括:第1部分 HashMap介绍第2部分 HashMa ...