OOP

面向对象编程 (OOP) 是用抽象方式创建基于现实世界模型的一种编程模式。它使用先前建立的范例,包括模块化,多态和封装几种技术。

在 OOP 中,每个对象能够接收消息,处理数据和发送消息给其他对象。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript


  1. // OOP & IIFE
  2. let moduleTest = (function(url = ``) {
  3. const V = `this is a constant value!`;
  4. const debug = false;
  5. // const url = ``;
  6. // return obj
  7. return {
  8. api: `https://developer.mozilla.org/API`,
  9. dom: () => {
  10. //do somthing
  11. console.log(`dom!`);
  12. },
  13. fetch: (url) => {
  14. // fetch data
  15. console.log(`url = `, url);
  16. },
  17. init: function() {
  18. const TV = `test value!`;
  19. let self = this;
  20. // this === obj ???
  21. if(debug){
  22. console.log(`self = this,`, self);
  23. // {api: "https://developer.mozilla.org/API", init: ƒ}
  24. console.log(`this obj = ,`, this);
  25. // {api: "https://developer.mozilla.org/API", init: ƒ}
  26. console.log(`self.api = ,`, self.api);
  27. // https://developer.mozilla.org/API
  28. console.log(`this.api = ,`, this.api);
  29. // https://developer.mozilla.org/API
  30. console.log(`self.V = ,`, self.V);
  31. // undefined
  32. console.log(`self.TV = ,`, self.TV);
  33. // undefined
  34. console.log(`outer V = ,`, V);
  35. // this is a constant value!
  36. console.log(`inner TV = ,`, TV);
  37. // test value!
  38. }
  39. this.dom();
  40. // do dom
  41. this.fetch();
  42. // init data
  43. }
  44. };
  45. })(url);
  46. const url = `https://cdn.xgqfrms.xyz/`;
  47. 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-*

https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests

http://www.jb51.net/html5/152511.html


  1. // Object (must be , data-obj=`{"key":"value"}`)
  2. // data-obj='{"uid":"007","name":"hacker","age":"unkown","address":"UFO"}'
  3. let test = document.querySelector('[data-obj*="uid"');
  4. let data_obj = JSON.parse(test.dataset.obj);

proxy 与 defineProperty 的区别,以及优势在哪里

Proxy

  1. 代理的是对象,可以拦截到数组的变化
  2. 拦截的方法多达13种
  3. 返回一个拦截后的数据

Object.defineProperty

  1. 代理的是属性, 对数组数据的变化无能为力
  2. 直接修改原始数据

refs

https://wangdoc.com/javascript/oop/prototype.html

https://www.imooc.com/video/6428



xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


OOP & 模块化, 多态, 封装的更多相关文章

  1. OOP三大核心封装继承多态

    OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用 ...

  2. 深入理解OOP(三):多态和继承(动态绑定和运行时多态)

    在前面的文章中,我们介绍了编译期多态.params关键字.实例化.base关键字等.本节我们来关注另外一种多态:运行时多态, 运行时多态也叫迟绑定. 深入理解OOP(一):多态和继承(初期绑定和编译时 ...

  3. 深入理解OOP(二):多态和继承(继承)

    本文是深入浅出OOP第二篇,主要说说继承的话题. 深入理解OOP(一):多态和继承(初期绑定和编译时多态) 深入理解OOP(二):多态和继承(继承) 深入理解OOP(三):多态和继承(动态绑定和运行时 ...

  4. python面向对象之继承/多态/封装

    老师说,按继承/多态/封装这个顺序来讲. 子类使用父类的方法: #!/usr/bin/env python # coding:utf-8 class Vehicle: def __init__(sel ...

  5. 组合&多态&封装

    目录 组合&多态&封装 一.组合 1.1什么是组合 1.2 为什么要用组合 1.3 如何使用组合 1.4 继承和组合都在什么时候用 二.多态与多态性 2.1 什么是多态 2.2 如何用 ...

  6. 谈CSS模块化【封装-继承-多态】

    第一次听到“CSS模块化”这个词是在WebReBuild的第四届“重构人生”年会上,当时我还想,“哈,CSS也有模块化,我没听错吧?”事实上,我没听错,你也没看错,早就有CSS模块化这个概念了.之所以 ...

  7. python oop常用术语 继承 多态 封装

    面向对象优点 1.通过封装明确了内外 2.通过继承+多态在语言层面支持了归一化设计 抽象/实现 抽象指对现实世界问题和实体的本质表现,行为和特征建模,建立一个相关的子集,可以用于 绘程序结构,从而实现 ...

  8. JS中OOP之模拟封装和继承和this指向详解

    大家好,今天我带大家学习一下js的OOP, 大家都知道,面向对象有三个基本特征,继承,封装和多态,面向对象的语言有那么几种,C++,PHP,JAVA等,而功能强大的JS可以模拟实现面向对象的两大特征, ...

  9. javascript大神修炼记(5)——OOP思想(封装)

    读者朋友们好,前面我们已经讲解了有关javascript的基础,从今天的内容开始,我们就要开始讲有关封装的内容了,这里,我们就一点一点地接触到OOP(面向对象编程)了,如果作为一门语言使用的程序员连O ...

随机推荐

  1. jackson学习之三:常用API操作

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. 解决Ajax同源政策的方法【JSONP + CORS + 服务器端解决方案】

    解决Ajax同源政策的方法 使用JSONP解决同源限制问题 jsonp是json with padding的缩写,它不属于Ajax请求,但它可以模以Ajax请求.\ 步骤 1.将不同源的服务器端请求地 ...

  3. DDOS攻击方式总结以及免费DDOS攻击测试工具大合集

    若有雷同或者不足之处,欢迎指正交流,谢谢! DoS(Denial Of Service)攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源,目的是让目标计算机或网络无法提 ...

  4. Mybatis参数预编译

    Mybatis参数预编译 一.数据库预编译介绍 1.数据库SQL语句编译特性: 数据库接受到sql语句之后,需要词法和语义解析,优化sql语句,制定执行计划.这需要花费一些时间.但是很多情况,我们的一 ...

  5. Java实现QQ邮件发送客户端

    目录 一.前言:QQ邮件发送程序 二.封装SMTP操作 三.实现多线程接收 四.QQ邮件客户端界面设计 1.连接按钮 2.发送按钮 五.QQ邮件发送效果演示 六.总结 一.前言:QQ邮件发送程序 在上 ...

  6. Win10家庭版Hyper-V出坑(完美卸载,冲突解决以及Device Guard问题)

    本文链接:https://blog.csdn.net/hotcoffie/article/details/85043894 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附 ...

  7. TCMalloc源码学习(三)(小块内存分配)

    线程本地cache 线程本地cache对应的是类 ThreadCache,每一个thread一个实例,初始化代码在static函数CreateCacheIfNecessary中, 在该线程第一次申请内 ...

  8. SpringMVC听课笔记(五:处理模型数据)

    1. Spring MVC 提供了以下几种途径输出数据模型 -- ModelAndView: 处理方法返回值类型为ModelAndView 时,方法体即可通过该对象添加模型数据 -- Map及Mode ...

  9. XCTF-phoenix100

    前期工作 查壳无壳,界面是普通的输入flag点击验证 逆向分析 文件结构只有一个MainActively,查看MainActively代码 public class MainActivity exte ...

  10. cnpm安装依赖时报Error: Cannot find module 'core-js/modules/es6.regexp.constructor'

    解决方案:npm install core-js@2 大致猜测:cnpm掉包所致...