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 ...
随机推荐
- js动画之缓冲运动
缓冲运动就是运动的速度与时间或者距离有关联,不是一般的匀速运动 <!DOCTYPE html> <html lang="en"> <head> ...
- ASP.NET后台调用前台JS函数的三种常见方法
第一种:使用普通的添加控件中的Attributes属性进行调用 例如,像一般的普通的按钮:Button1.Attributes.Add("onclick","MyFun( ...
- SQL SERVER 字符串常用函数
在开发T-SQL时,经常会需要对字符串进行各种各样的操作,下面介绍常用的字符串函数. 1.获取字符的ASCII码 ASCII ASCII码是对字符的标准编码.要获取字符的ASCII码就可以通过调用AS ...
- 内核input子系统分析
打开/driver/input/input.c 这就是input代码的核心 找到 static int __init input_init(void) { err = class_register(& ...
- 0526 Sprint1个人总结 & 《构建之法》第八、九、十章
Sprint1的个人总结: 我是老人组的成员,我们是做一款四则运算训练的软件.然后我是接了界面设计的任务,所以我任务将会是sprint1中相对重一点的一方.我的感觉是,界面要做得充满童趣,毕竟我们的软 ...
- position属性的四个value
As we all know, position属性有四个值,分别为 relative,fixed,absolute, static. 1,relative相对定位 (不会脱离文档流) 在一个相对定位 ...
- 关于项目中owl文件中的类定义和属性定义
<owl:Class rdf:about="www.isinonet.com/insider#XXX"> <rdfs:label>name</rdfs ...
- Git简单应用(1)
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 1.Windows安装git msysgit是Windows版的Git,从https://git-for-windows. ...
- UVA 12549 - 二分图匹配
题意:给定一个Y行X列的网格,网格种有重要位置和障碍物.要求用最少的机器人看守所有重要的位置,每个机器人放在一个格子里,面朝上下左右四个方向之一发出激光直到射到障碍物为止,沿途都是看守范围.机器人不会 ...
- 探索软件工程道路上的我III (Θ∀Θ#)
github地址:https://github.com/JUNYU217/2016-03-08 开发语言:Java 开发工具:UltraEdit || 为月末了,网费欠了...很抱歉的拖了那么久的作业 ...