JS高级 - 面向对象1(this,Object ,工厂方式,new )
面向对象三要素:
封装
继承
多态
1.this 详解,事件处理中this的本质
- window
- this —— 函数属于谁
<script type="text/javascript">
var arr=[12,65,87];
//this:当前的方法,属于谁
arr.show =function (argument) {
// body...
console.log(this); //[12,65,87]
}
arr.show();
function show(){
console.log(this); //window
}
show();
</script>
2.Object 的使用:##
<script type="text/javascript">
var obj = new Object();
obj.aaa = 12;
obj.show = function (argument) {
console.log(this.aaa); //12
}
obj.show();
</script>
3.工厂方式:
<script type="text/javascript">
function createPerson(name, sex) {
var obj = new Object();
obj._name = name;
obj._sex = sex;
obj.showName = function() {
console.log('我的名字叫:' + this._name);
}
obj.showSex = function() {
console.log('我是' + this._sex + '的');
}
return obj;
}
var p1 = createPerson('唐三', '男');
p1.showName();
p1.showSex();
var p2 = createPerson('唐九妹', '女');
p2.showName();
p2.showSex();
</script>
工厂方式的问题:
1.没有new
2.每个对象都有一套自己的函数 —— 浪费资源
4.new的情况:
<script type="text/javascript">
function createPerson(name, sex) {
//var this = Object();
this._name = name;
this._sex = sex;
this.showName = function() {
console.log('我的名字叫:' + this._name);
}
this.showSex = function() {
console.log('我是' + this._sex + '的');
}
//return this;
}
var p1 = new createPerson('唐三', '男'); //new 的情况下
p1.showName();
p1.showSex();
var p2 = new createPerson('唐九妹', '女');
p2.showName();
p2.showSex();
</script>
JS高级 - 面向对象1(this,Object ,工厂方式,new )的更多相关文章
- js高级-面向对象继承
一.工厂模式创建对象及优缺点 继承就是把公共的部分抽象出来作为父类,基类.吃饭,跑步等 var a = {}; //批量创建不方便,不能重复设置公共属性的代码 //工厂模式出现了,创建10个Cat对象 ...
- js中面向对象(创建对象的几种方式)
1.面向对象编程(OOP)的特点: 抽象:抓住核心问题 封装:只能通过对象来访问方法 继承:从已有的对象下继承出新的对象 多态:多对象的不同形态 一.创建对象的几种方式 javascript 创建对象 ...
- JS高级——面向对象方式解决歌曲管理问题
需要注意的问题: 1.其他模块若是使用构造函数MP3创建对象,唯一不同的就是他们传入的音乐库是不一样的,所以构造函数中存在一个songList属性,其他一样的就被添加到了构造函数的原型对象之中 2.原 ...
- JS高级 - 面向对象4(json方式面向对象)
把方法包在一个Json里 var p1 = { name: "唐三", sex: "男", dreamdu: { URL: "www.dreamdu. ...
- JS高级——面向对象方式解决tab栏切换问题
注意事项 1.给li元素注册事件,函数里面的this指的li元素,那么我们可以在注册事件之前将Tab对象用that=this进行保存 2.使用沙箱模式,所以暴露给外面的变量使用的是window.tab ...
- JS高级 - 面向对象5(继承,引用)
<script type="text/javascript"> //------------------Person类 //(Person)的构造函数 function ...
- JS高级 - 面向对象2(prototype定义)
定义和用法 prototype 属性允许您向对象添加属性和方法 注意: Prototype 是全局属性,适用于所有的Javascript对象. 语法 object.prototype.name=val ...
- JS高级---面向对象的编程思想(贪吃蛇梳理)
面向对象的编程思想(贪吃蛇梳理) 模拟贪吃蛇游戏,做的项目 地图: 宽,高,背景颜色,因为小蛇和食物都是相对于地图显示的, 这里小蛇和食物都是地图的子元素, 随机位置显示, 脱离文档流的, 地图也需要 ...
- JS高级 - 面向对象3(面向过程改写面向对象)
改写: 1.前提:所有东西都在 onload 里 2.改写:不能有函数嵌套,可以有全局变量 onload --> 构造函数 全局变量 --> 属性 函数 --> 方法 4.改错: t ...
随机推荐
- Kafka 0.10问题点滴
15.如何消费内部topic: __consumer_offsets 主要是要让它来格式化:GroupMetadataManager.OffsetsMessageFormatter 最后用看了它的源码 ...
- Ubuntu 下 Tomcat7 的安装和配置
tomcat下载地址:http://tomcat.apache.org/download-70.cgi 声明:下面的内容和原创笔者的博文的内容差不多,不一样的只是tomcat7的安装目录不同,我按照我 ...
- CentOS下查找java环境变量
CentOS下通过命令查找java环境变量 [root@yuteng opt]# echo $JAVA_HOME /usr/java/default [root@yuteng opt]# which ...
- 循环屏障CyclicBarrier以及和CountDownLatch的区别
CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier).它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门, ...
- 淘淘商城之springmvc和mybatis整合
一.需求 使用springmvc和mybatis完成商品列表查询 二.整合思路 springmvc+mybaits的系统架构: 第一步:整合dao层 mybatis和spring整合,通过spring ...
- C# http get与post请求方法
public class HttpTools { public static string GetRequest(string url) { HttpWebRequest request = (Htt ...
- Postfix邮件服务 - DNS配置
DNS 域名系统服务器 IP 与 域名之间解析 :提供分层的域名解析 服务:bing 伯克利加州大学 应用最广的域名服务系统: bind 主要分为 主配置文件 和 域数据记录文件 yum 安装: yu ...
- git进阶命令
首先, clone 一个远端仓库,到其目录下: $ Git clone git://example.com/myproject $ cd myproject 然后,看看你本地有什么分支: $ git ...
- SAX解析XML文档——(二)
SAX从上向下解析,一行一行解析.节省内存,不适合CRUD. XML文档: <?xml version="1.0" encoding="UTF-8"?&g ...
- malloc 函数详解【转】
转自:https://www.cnblogs.com/Commence/p/5785912.html 很多学过C的人对malloc都不是很了解,知道使用malloc要加头文件,知道malloc是分配一 ...