这是我参与8月更文挑战的第27天,活动详情查看:8月更文挑战
☆☆☆ 今天学习的内容: ( 原型和原型链 | 工厂模式 | 构造函数 ) !查缺补漏! ☆☆☆
可作为初学者的学习路线, 可参考一下, 学习进度也不是特别赶! 持续学习更新中
结合自己的理解, 用白话文简单又全面概括
JavaScript学习过程中的基础知识点, 方便加深理解!
开始今天的学习吧! '打牢地基才能筑高楼'! 加油! 认真对待!!
1、梳理昨日知识点:
( 面向对象 | 面向过程 | 类和对象 )
- 对象:
- 面向对象
- 类和对象
- 面对对象和面向过程
2、对象创建的几种方式
2.1 字面量 { } 或 new 方式创建对象
var obj = {
sname : "lichune", 属性
tel : "666",
teach : function(){ 方法
}
}
var obj = new Object();
obj.sname = "lce";
obj.eat = function(){
}
缺点 : 创建多个同类对象时,代码会重复 此种方案只适用于一次创建一个对象
3、设计模式之---工厂模式
3.1 定义:
工厂模式 : 可以创建多个同类的对象
3.2 创建方式:
1--需要一个工厂 一个函数
function 工厂(){
1--备料--创建一个对象
var obj = new Object();
2--加工--为对象添加属性和方法
obj.属性=
obj.方法=
3--出场--返回创建的对象
return obj
}
- 优点 : 创建多个同类对象时,代码不会重复书写
- 缺点 :
- 1、 一般对象是通过 new 关键字创建的,而工厂模式创建对象只是一种普通函数的调用 , 不符合对象的创建方案 不提倡使用
- 2、 不能确定某个对象属于哪一个构造函数(类)
扩展 : instanceof 测试某个对象属于哪一个构造函数
用法 : 对象 instanceof 构造函数 返回值是布尔类型
4、构造函数
说明 :
-
1、一般为了和普通函数进行区分,构造函数的函数名编写规范是 大驼峰 编写规范
-
2、写在构造函数内部的属性 叫做实例属性 方法叫做 实例方法
-
3、构造函数内的 this 指向通过构造函数 new 出来的对象
-
优点 : 对象创建方式规范,是通过 new 关键字创建的
能确定某个对象属于哪一个构造函数(类)
- 缺点 :
多个同类对象被创建时,相同的方法会被 重复创建
5、原型
将属性和方法写在构造函数的外面
说明 :
- 1、写在构造函数外面的属性叫做原型属性 方法叫做原型方法
- 2、通过
构造函数.prototype.属性创建原型属性构造函数.prototype.方法创建原型方法
优点 :
多个同类对象的相同方法是共享的 不会被重建
缺点 : 所有对象的属性名都相同
6、混合
- 将属性写成实例属性
- 将方法写成原型方法
解决了上面创建对象时遇到的所有的 缺点
7、原型对象
所有的构造函数都有一个prototype 属性,这个属性就叫做原型对象
所有的构造函数 new 出来的对象都有一个原型对象 实现 : 对象.__proto__
在原型对象上创建的方法是共享的。
Array.prototype
面试题 : 在 Array 的原型上实现数组的去重
8、原型模式的执行流程
首先在实例上查找,如果有实例属性或方法 就返回 ,如果没有,就去原型上查找 如果有就返回
如果原型上没有对应的属性或方法,就去最外层的 Object.prototype上查找 如果有就返回,没有返回 undefined
9、原型链
实例对象和原型之间的连接 就叫做原型链
原型链和作用域链
作用域链 : 首先在函数内部查找某个变量,如果有就返回 不再向外查找,否则继续向函数外面查找
10、原型中的关键字(扩展)
测试某个对象是否属于某个类的方法 isPrototypeOf()
语法: 构造函数.prototype.isPrototypeOf(对象): 判断一个对象是否指向了该构造函数的原型对象,可以使用 isPrototypeOf() 方法来测试 结果为 boolean 类型
同 instanceof
delete :删除实例属性
语法 : delete 对象.实例属性
hasOwnProperty() 是否包含该实例属性, 包含返回 true,否则返回 false
语法: 实例对象.hasOwnProperty("实例属性")
in 是否存在该属性(原型或实例中)
语法: "属性" in 对象实例
预告: 加油, 追梦人
学习就是一个不断进行的过程, 坚持下去, 定有收获!
日积月累, 巩固基础, 早进大厂!
坚持很不容易, 坚持下来更不容易, 你真棒!
Calm Down & Carry On!
更多阅读:
前文更新回顾
【重学 JS】每天学习巩固基础系列文章:
【重温 JS】巩固基础之-ajax 原理/缓存/接口、 【重温 JS】巩固基础 day23-前端也要了解一些数据库
【day2】各种运算符、 【day3】数据类型、 【day4】循环结构 & 条件语句、 【day5】函数(重点)、 【day6】作用域 & 事件、
【day7】对象 & 数组方法总结、 【day8】字符串方法 & 部分排序、
【day9】Math 对象 & 封装函数、 【day10】BOM-浏览器对象模型、
【day12】Event 事件对象初识(一)、 【day13】Event 事件对象初识(二)、
更多期待在路上...任重而道远==-..-==