jQuery进阶第四天(2019 10.13)
2024-09-01 12:38:53
1 初识面向对象(面向对象是一种思维方式)
以前写的代码
var name = '莉莉';
var sex = '女';
var age = 18;
var name1 = '小明';
var sex1 = '男';
var age1 = 19;
面向对象的代码:
var lili = {
name: 'lili',
sex: 'nv',
age: 18
}
var xiaoming = {
name: 'xiaoming',
sex: 'nan',
age: 19
}
2 简单工厂
简单工厂:people函数可以产生对象,根据传入的参数不同产生的对象也不同
参数===原料, 对象===产品
function people(name, sex, age) {
// 声明一个空对象
var obj = {};
// 给属性赋值
obj.name = name;
obj.sex = sex;
obj.age = age;
// 添加方法
obj.show = function() {
console.log("我叫" + this.name + ', 我今年' + this.age + '岁,我是一个' + this.sex + '生!');
}
// 返回对象
return obj;
}
简单工厂的缺陷:通过工厂产生的对象,没有办法区分种类
3 构造函数
1、构造函数首字母大写,但这不是语法要求,作为书写习惯
2、构造函数使用new 关键字调用
new操作的过程
1、在内存中申请了一块空间
2、改变this指向(this默认指向window对象,this指向要生成的对象)
3、为this赋值
4、返回this指向的对象
return对构造函数的影响(结论:非引用的返回值没有影响,引用类型的返回值会取代this所指向的对象)
说法:(实例、类、实例化)
将产生的对象称之为实例(实例化对象)
将new过程称之为实例化
将构造函数称之为类
<script>
function People(name, sex, age) {
// 给属性赋值
this.name = name;
this.sex = sex;
this.age = age;
// 添加方法
this.show = function() {
console.log("我叫" + this.name + ', 我今年' + this.age + '岁,我是一个' + this.sex + '生!');
}
}
var xiaoming = new People('小明', '男', 18);
</script>
5 备份this(当指定对象不是this的指定对象 就会默认window对象为指定对象 这时就得备份);
<script>
var obj = {
name1: 'aaa',
demo: function() {
console.log(this.name1);
},
test: function() {
// 备份this
var me = this;
(function() {
// 此处this不会指向obj对象,指向的是window对象
// console.log(this.name1);
console.log(me.name1);
})();
}
}
obj.demo();
// window.name1 = 333;
obj.test();
</script>
最新文章
- MS10-087微软OFFICE漏洞【参考拿机模拟】
- salesforce 零基础学习(四十六)动态美观显示列表中记录的审批状态
- 接入WebSocket记录
- 小谈 checkbox 的选中
- Mysql使用workbench迁移数据
- BZOJ2095 [Poi2010]Bridges
- HDU 5832 A water problem (带坑水题)
- Java多线程——其他工具类CyclicBarrier、CountDownLatch和Exchange
- LVS+Keepalived+Nginx+Tomcat高可用负载均衡集群配置(DR模式,一个VIP,多个端口)
- mybatis系列笔记(2)---mapper代理方法
- Object-C知识点
- 【CSS】伪类和伪元素选择器
- java输出日志
- Device Tree Usage(理解DTS文件语法)
- 20165306 Exp2 后门原理与实践
- Java程序心得体会
- struts2各个功能详解(1)----参数自动封装和类型自动转换
- python网络聊天器多线程版
- 在ado.net中实现oracle存储过程调用两种方式
- Qt中printsupport的注意点和使用方法