OOP & 模块化, 多态, 封装
OOP
面向对象编程 (OOP) 是用抽象方式创建基于现实世界模型的一种编程模式。它使用先前建立的范例,包括
模块化,多态和封装几种技术。
在 OOP 中,每个对象能够接收消息,处理数据和发送消息给其他对象。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript
// OOP & IIFE
let moduleTest = (function(url = ``) {
const V = `this is a constant value!`;
const debug = false;
// const url = ``;
// return obj
return {
api: `https://developer.mozilla.org/API`,
dom: () => {
//do somthing
console.log(`dom!`);
},
fetch: (url) => {
// fetch data
console.log(`url = `, url);
},
init: function() {
const TV = `test value!`;
let self = this;
// this === obj ???
if(debug){
console.log(`self = this,`, self);
// {api: "https://developer.mozilla.org/API", init: ƒ}
console.log(`this obj = ,`, this);
// {api: "https://developer.mozilla.org/API", init: ƒ}
console.log(`self.api = ,`, self.api);
// https://developer.mozilla.org/API
console.log(`this.api = ,`, this.api);
// https://developer.mozilla.org/API
console.log(`self.V = ,`, self.V);
// undefined
console.log(`self.TV = ,`, self.TV);
// undefined
console.log(`outer V = ,`, V);
// this is a constant value!
console.log(`inner TV = ,`, TV);
// test value!
}
this.dom();
// do dom
this.fetch();
// init data
}
};
})(url);
const url = `https://cdn.xgqfrms.xyz/`;
moduleTest.init(url);
HTML5 Atrribute ???
CSS Attributes ???
https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes
https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/data-*
data-*
HTML5 这类的属性,被称为自定义属性,允许HTML与和它对应DOM表现形式之间的专有信息交换,这或许对script来说有用。
https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/data-*
http://www.jb51.net/html5/152511.html
// Object (must be , data-obj=`{"key":"value"}`)
// data-obj='{"uid":"007","name":"hacker","age":"unkown","address":"UFO"}'
let test = document.querySelector('[data-obj*="uid"');
let data_obj = JSON.parse(test.dataset.obj);
proxy 与 defineProperty 的区别,以及优势在哪里
Proxy
- 代理的是对象,可以拦截到数组的变化
- 拦截的方法多达13种
- 返回一个拦截后的数据
Object.defineProperty
- 代理的是属性, 对数组数据的变化无能为力
- 直接修改原始数据
refs
https://wangdoc.com/javascript/oop/prototype.html
https://www.imooc.com/video/6428
xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
OOP & 模块化, 多态, 封装的更多相关文章
- OOP三大核心封装继承多态
OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用 ...
- 深入理解OOP(三):多态和继承(动态绑定和运行时多态)
在前面的文章中,我们介绍了编译期多态.params关键字.实例化.base关键字等.本节我们来关注另外一种多态:运行时多态, 运行时多态也叫迟绑定. 深入理解OOP(一):多态和继承(初期绑定和编译时 ...
- 深入理解OOP(二):多态和继承(继承)
本文是深入浅出OOP第二篇,主要说说继承的话题. 深入理解OOP(一):多态和继承(初期绑定和编译时多态) 深入理解OOP(二):多态和继承(继承) 深入理解OOP(三):多态和继承(动态绑定和运行时 ...
- python面向对象之继承/多态/封装
老师说,按继承/多态/封装这个顺序来讲. 子类使用父类的方法: #!/usr/bin/env python # coding:utf-8 class Vehicle: def __init__(sel ...
- 组合&多态&封装
目录 组合&多态&封装 一.组合 1.1什么是组合 1.2 为什么要用组合 1.3 如何使用组合 1.4 继承和组合都在什么时候用 二.多态与多态性 2.1 什么是多态 2.2 如何用 ...
- 谈CSS模块化【封装-继承-多态】
第一次听到“CSS模块化”这个词是在WebReBuild的第四届“重构人生”年会上,当时我还想,“哈,CSS也有模块化,我没听错吧?”事实上,我没听错,你也没看错,早就有CSS模块化这个概念了.之所以 ...
- python oop常用术语 继承 多态 封装
面向对象优点 1.通过封装明确了内外 2.通过继承+多态在语言层面支持了归一化设计 抽象/实现 抽象指对现实世界问题和实体的本质表现,行为和特征建模,建立一个相关的子集,可以用于 绘程序结构,从而实现 ...
- JS中OOP之模拟封装和继承和this指向详解
大家好,今天我带大家学习一下js的OOP, 大家都知道,面向对象有三个基本特征,继承,封装和多态,面向对象的语言有那么几种,C++,PHP,JAVA等,而功能强大的JS可以模拟实现面向对象的两大特征, ...
- javascript大神修炼记(5)——OOP思想(封装)
读者朋友们好,前面我们已经讲解了有关javascript的基础,从今天的内容开始,我们就要开始讲有关封装的内容了,这里,我们就一点一点地接触到OOP(面向对象编程)了,如果作为一门语言使用的程序员连O ...
随机推荐
- (14)-Python3之--虚拟环境virtualenv
1.安装virtualenv pip install virtualenv 如果是在Linux下需要把virtualenv添加到/usr/bin目录下 # find / -name virtualen ...
- 解决window10 和 ubuntu 双系统安装没有启动选项问题
win10 和Ubuntu 双系统安装在网上已经有很多例子了,这里就不在赘述了. 今天新买的笔记本,想安装双系统.正常安装完ubuntu 重启后没有选项. 解决方法一 下载和解压以后,按照以下的步骤安 ...
- Mysql四种通信协议(linux下本地连接的都是socket 其他都是tcp)
Mysql通信协议 - 张冲andy - 博客园 https://www.cnblogs.com/andy6/p/6204579.html
- 洛谷P2687 & P1108
一道求最长下降子序列和与最长下降子序列长度相同的方案数的DP 题意: 一串数字,找出最长下降子序列,记录他的长度 \(length\) 并输出 然后找出所有长度达到 \(length\) 的下降子序列 ...
- Mysql 不能使用逗号的情况
不存在逗号的情况: 联合查询: 1.UNION SELECT * FROM ((SELECT 1)a JOIN (SELECT 2)b JOIN (SELECT 3)c JOIN (SELECT 4) ...
- java正则表示判断。是否以某个关键字结尾的
String defaultPageSqlId = ".*ByPaging$"; System.out.println("dsdsdsdByPaging".ma ...
- H3C交换机端口聚合配置
1.接入交换机: interface Ten-GigabitEthernet1/0/21 port link-mode bridge port link-type trunk port trunk p ...
- for循环语句学习
for循环又称为遍历循环,从名字就可以知道,它用于对象的遍历 语法格式: 会从可迭代对象对象中依次拿出值来赋值给变量,变量的值每次都会被修改 for 变量1[变量2...] in 可迭代对象: 代码块 ...
- HDU 6762 Mow (2020 Multi-University Training Contest 1 1012) 半平面交
Mow 题目链接 分析 将多边形的边向内部缩 r 个单位长度,然后这些边所围成的内部区域,就是圆心的合法范围,该范围也是一个多边形,假设面积是\(a\),周长是\(b\),那么可以知道圆可以覆盖的面积 ...
- UVALive 7276 Wooden Signs
详细题目见:http://7xjob4.com1.z0.glb.clouddn.com/0f10204481da21e62f8c145939e5828e 思路:记dp[i][j]表示第i个木板尾部在j ...