JS 对象
对象,在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 对象的更多相关文章
- JS对象继承篇
JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person() ...
- JS 对象封装的常用方式
JS是一门面向对象语言,其对象是用prototype属性来模拟的,下面,来看看如何封装JS对象. 常规封装 function Person (name,age,sex){ this.name = na ...
- JSON字符串和JS对象之间的转换
JSON字符串和JS对象之间的转换 1 json字符串转换为js对象 1.1 标准json格式字符串转换为Js对象 JSON字符串 str JSON.parse(str) eval(str) eva ...
- js 对象的_proto_
js 对象呢,有个属性叫_proto_,以前没听说过,也没关注,最近看这个原型,就被迫知道了这个东西,js 这里面的东西,真是规定的很奇怪,具体为啥也不知道,就测试发现的,对象的_proto_属性,和 ...
- js对象/数组深度复制
今天碰到个问题,js对象.数组深度复制:之前有见过类似的,不过没有实现函数复制,今晚想了一下,实现代码如下: function clone(obj) { var a; if(obj instanceo ...
- js对象的深度克隆
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js对象详解
js自定义对象 一,概述 在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 目前在J ...
- js对象常用2中构造方法
//js 对象的构造方法通常有2中情况: //第一种是通过json对象构造 var persion={ name:"孙悟空", age:40, eat:function () { ...
- JS对象复制
在JavaScript很多人复制一个对象的时候都是直接用"=",因为大家都觉得脚本语言是没有指针.引用.地址之类的,所以直接用"="就可以把一个对象复制给另外一 ...
- js对象私有变量公有变量问题
0 js对象私有变量公有变量问题5 小弟初学JS面向对象编程 现有一问题 请教各位大虾: Person=function (){ //私有变量定义 var name; vae age; var Ale ...
随机推荐
- Common.Logging log4net Common.Logging.Log4Net 配置
1.log4net 单独配置 log4net支持多种格式的日志输出,我这里只配置输出到本地的txt文件这种格式. <log4net> <root> <appender-r ...
- ORA-06552: PL/SQL: Compilation unit analysis terminated ORA-06553: PLS-553: character set name is not recognized
首先,确认字符集是否修改的不彻底.SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET,DECODE(TYPE#, 1, DECODE( ...
- STM32——DMA接收和发送的实现
最近写程序,需要一段一段数据的接收,再通过其他串口发送出去. 老司机们建议用DMA通信,以节约CPU资源.然后,我听了,发现挺好用的.特此,把自己写的代码贴上了. DMA发送接收的步骤如下: 1.初始 ...
- oc swizzling 真的好用
Objective-C的hook方案(一): Method Swizzling 在没有一个类的实现源码的情况下,想改变其中一个方法的实现,除了继承它重写.和借助类别重名方法暴力抢先之外,还有更加灵活 ...
- 如何布局包含Image和Title的UIButton
UIButton中的titleEdgeInsets和imageEdgeInsets可以管理button中image和title的布局.如果对其理解不够深入,用纯数字进行布局管理,经过不断的调试,还是能 ...
- 移动安全初探:窃取微信聊天记录、Hacking Android with Metasploit
在这篇文章中我们将讨论如何获取安卓.苹果设备中的微信聊天记录,并演示如何利用后门通过Metasploit对安卓设备进行控制.文章比较基础.可动手性强,有设备的童鞋不妨边阅读文章边操作,希望能激发大家对 ...
- 重写ajax方法实现异步请求session过期时跳转登录页面
jQuery(function($){ // 备份jquery的ajax方法 var _ajax=$.ajax; // 重写ajax方法, $.ajax=function(opt){ var _suc ...
- 深入理解JavaScript系列:史上最清晰的JavaScript的原型讲解
一说起JavaScript就要谈的几个问题,原型就是其中的一个.说了句大话,史上最清晰.本来是想按照大纲式的行文写一下,但写到后边感觉其实就一个概念,没有什么条理性,所以下面就简单按照概念解释的模式谈 ...
- ubuntu下avd创建和文件传输
进入安卓官网下载安卓sdk并解压到指定路径 在命令行模式下进入安卓文件的toos文件夹下 android avd #在弹出的对话框中新建虚拟机 adb install ~/targetPath/hel ...
- Object.prototype 与 Function.prototype 与 instanceof 运算符
方法: hasOwnProperty isPrototypeOf propertyIsEnumerable hasOwnProperty 该方法用来判断一个对象中的某一个属性是否是自己提供的( 住要用 ...