对象,在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. CBitmap、HBITMAP、BITMAP相互转换

    一:理解 BITMAP是C++中定义的位图结构体 HBITMAP是Windows中使用的位图句柄 CBitmap是MFC封装的位图类 二:相互转换 1.HBITMAP->CBitmap 方法一: ...

  2. Linq中关键字的作用及用法

    Linq中关键字的作用及用法 1.All:确定序列中的所有元素是否都满足条件.如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false. Demo: 此示例使用 ...

  3. Unreal Engine Plugin management

    Be aware to remove any dependencies to any modules related to Editor, or else it will end up with fa ...

  4. sql server数据库连接问题处理

    下面请一字一句地看,一遍就设置成功,比你设置几十遍失败,费时会少得多. 首先,在连接数据库之前必须保证SQL Server 2012是采用SQL Server身份验证方式而不是windows身份验证方 ...

  5. Github Atom 1.12.0-beta3 发布

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

  6. 计算机开放电子书汇总(包括二十多本python相关的图书教程)

    计算机开放电子书汇总(包括二十多本python相关的图书教程) https://github.com/it-ebooks/it-ebooks-archive 这个汇总包含了各种计算机相关的开放图书和文 ...

  7. jsp中的正则表达式

    sp中${}----是EL表达式的常规表示方式目的是为了获取{}中指定的对象(参数.对象等)的值如:${user.name}<====>User user = (User)request( ...

  8. 解决protobuf不能直接在IOS上使用,利用protobuf-net在IOS上通讯

    ---------------------------------------------------------------------------------------------------- ...

  9. 虚机centos和本机Windows之间文件的拷贝无法用xftp时用FileZilla也行

    步骤如下: 1.如果Centos没有安装ssh,则需要先安装: 2.查看虚拟机中IP地址,命令如下: ifconfig 3.在windows中安装ftp软件 FileZilla启动软件如图: 6  这 ...

  10. linux命令:目录结构

      可分享的(shareable) 不可分享的(unshareable) 不变的(static) /usr (软件放置处) /etc (配置文件) /opt (第三方协力软件) /boot (开机与核 ...