面向对象三要素:

封装

继承

多态

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 )的更多相关文章

  1. js高级-面向对象继承

    一.工厂模式创建对象及优缺点 继承就是把公共的部分抽象出来作为父类,基类.吃饭,跑步等 var a = {}; //批量创建不方便,不能重复设置公共属性的代码 //工厂模式出现了,创建10个Cat对象 ...

  2. js中面向对象(创建对象的几种方式)

    1.面向对象编程(OOP)的特点: 抽象:抓住核心问题 封装:只能通过对象来访问方法 继承:从已有的对象下继承出新的对象 多态:多对象的不同形态 一.创建对象的几种方式 javascript 创建对象 ...

  3. JS高级——面向对象方式解决歌曲管理问题

    需要注意的问题: 1.其他模块若是使用构造函数MP3创建对象,唯一不同的就是他们传入的音乐库是不一样的,所以构造函数中存在一个songList属性,其他一样的就被添加到了构造函数的原型对象之中 2.原 ...

  4. JS高级 - 面向对象4(json方式面向对象)

    把方法包在一个Json里 var p1 = { name: "唐三", sex: "男", dreamdu: { URL: "www.dreamdu. ...

  5. JS高级——面向对象方式解决tab栏切换问题

    注意事项 1.给li元素注册事件,函数里面的this指的li元素,那么我们可以在注册事件之前将Tab对象用that=this进行保存 2.使用沙箱模式,所以暴露给外面的变量使用的是window.tab ...

  6. JS高级 - 面向对象5(继承,引用)

    <script type="text/javascript"> //------------------Person类 //(Person)的构造函数 function ...

  7. JS高级 - 面向对象2(prototype定义)

    定义和用法 prototype 属性允许您向对象添加属性和方法 注意: Prototype 是全局属性,适用于所有的Javascript对象. 语法 object.prototype.name=val ...

  8. JS高级---面向对象的编程思想(贪吃蛇梳理)

    面向对象的编程思想(贪吃蛇梳理) 模拟贪吃蛇游戏,做的项目 地图: 宽,高,背景颜色,因为小蛇和食物都是相对于地图显示的, 这里小蛇和食物都是地图的子元素, 随机位置显示, 脱离文档流的, 地图也需要 ...

  9. JS高级 - 面向对象3(面向过程改写面向对象)

    改写: 1.前提:所有东西都在 onload 里 2.改写:不能有函数嵌套,可以有全局变量 onload --> 构造函数 全局变量 --> 属性 函数 --> 方法 4.改错: t ...

随机推荐

  1. Spark记录-SparkSQL远程操作MySQL和ORACLE

    1.项目引入mysql和oracle驱动 2.将mysql和oracle驱动上传到hdfs 3.远程调试源代码如下: import org.apache.spark.sql.SQLContext im ...

  2. 五、u-boot 启动流程---u-boot.lds

    5.1 u-boot.lds  链接脚本分析 uboot 编译出来的第一个链接脚本就是执行 u-boot.lds 链接脚本,去掉里面无用的和没有定义的,进行分析. /* 配置头文件,自动生成的,包含芯 ...

  3. luogu 1631 序列合并

    priority_queue的使用,注意 a[1]+b[1],a[1]+b[2],a[1]+b[3],a[1]+b[4].......a[1]+b[n] a[2]+b[1]......... .. a ...

  4. Linux 设置最大链接

    最大连接数 ulimit -SHn # 最大文件句柄数,最大打开文件数(等同最大连接数) ulimit -a # 查看 /etc/security/limits.conf # 进程最大打开文件数 # ...

  5. Java SE之向上转型与向下转型

    package object; //向上转型-向下转型 public class Up_Down_convert { /* 向上转型 * * 1.上转型对象可以使用和操作子类继承或者重写的方法 * 2 ...

  6. [C++]求解三元一次方程组

    /** * author:johnny zen * date:2017-09-20 11:19 * function:Calculate Ternary system of equations * n ...

  7. UBUNTU18.04安装网易云音乐并直接图标启动

    这是一个网友改的程序,安装好以后把 ~/.cache/netcase-cloud-music 这个目录删除掉,就可以正常使用了,不用root权限

  8. C语言中#ifdef,#ifndef和#endif的作用

    现在规定一下头文件书写规范, 根据陈皓编写的跟我一起些makefile,一定要记住:头文件中应该只是声明,而定义应该放在C/C++文件中.否则如果出现有定义,比如头文件中有int a =2;如果有多个 ...

  9. python标准库 - 数学库和随机数库

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经在Python运算中看到Python最基本的数学运算功能.此外,math包 ...

  10. 解决Ubuntu的root账号无法登录SSH问题-Permission denied, please try again.

    http://www.cnblogs.com/yixius/articles/6971054.html