ES5-12 【utils】继承深入、call、apply、圣杯模式、模块化

继承深入

这两种方式继承不够合理(为什么)

  • 将实例作为子类的原型
    在这里插入图片描述

  • 在子类的构造函数内部借用父类的构造函数

  • 在这里插入图片描述

  • 将父类的原型作为子类的原型(会修改父类的原型)
    在这里插入图片描述

css圣杯布局(左右宽度固定、中间自适应)

  • 目标效果
    在这里插入图片描述

  • 左中右div左浮动、相对定位(一行显示,宽度由内容撑开)
    在这里插入图片描述

  • 中间宽度100%:铺满整行
    在这里插入图片描述

  • 左left设置为自己宽度的负值
    在这里插入图片描述

  • 中间上移
    在这里插入图片描述

  • 给main(外部容器)加padding

  • 在这里插入图片描述

  • 右加负左外边距,右上移至同行,中、右重叠
    在这里插入图片描述

  • 右设置left
    在这里插入图片描述

  • 中间内容增加时
    - 在这里插入图片描述

  • 给左中右设置很大的下内外边距
    在这里插入图片描述

  • main清除浮动
    在这里插入图片描述

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body {padding: 50px;}.wrap {border: 1px solid #000;width: 80%;}.top,.foot {height: 50px;background-color: pink;}.main {padding: 0 50px;overflow: hidden;}.main .left,.main .content,.main .right {float: left;position: relative;background-color: cornflowerblue;width: 50px;padding-bottom: 2000px;margin-bottom: -2000px;}.main .content {background-color: crimson;width: 100%;margin-left: -50px;}.main .left {left: -50px;}.main .right {margin-left: -50px;left: 50px;}</style>
</head><body><div class="wrap"><div class="top"></div><div class="main"><div class="left">123</div><div class="content">456<br>556</div><div class="right">789</div></div><div class="foot"></div></div><script type="text/javascript"></script>
</body></html>

JS圣杯模式

  • 用buffer实例来隔绝父构造函数的原型和子构造函数的实例

在这里插入图片描述
在这里插入图片描述

  • 封装

在这里插入图片描述

  • 自执行函数里 隔绝作用域
    在这里插入图片描述
var inherit = (function () {function Buffer() { }function inherit(Target, Origin) {Buffer.prototype = Origin.prototypeTarget.prototype = new Buffer()Target.prototype.constructor = TargetTarget.prototype.super_class = Origin}return inherit
})();
function Teacher() {this.tName = 't'
}
function Student() {this.sName = 's'
}
inherit(Student,Teacher)
console.log(new Student())

在这里插入图片描述

var inherit = (function () {function Buffer() { }function inherit(Target, Origin) {Buffer.prototype = Origin.prototypeTarget.prototype = new Buffer()Target.prototype.constructor = TargetTarget.prototype.super_class = Origin}return inherit
})();
var Common = function () {}
// 继承父类原型上的属性和方法 实例中的属性和方法则不继承
Common.prototype = {time: '8小时',range: '周一至周五'
}
Common.prototype.printFn = function () {console.log(this.name + ":每天工作" + this.time + ',工作时间' + this.range)
}
var Worker = function (name) {this.name = name
}
inherit(Worker, Common)
var p1 = new Worker('桐壶更衣')
console.log(p1)
var p2 = new Worker('紫姬')
p1.printFn()
p2.printFn()

用于多人协作开发、模块化开发,有自己的命名空间,作用域和外界隔离了。在多人协作时,能防止全局污染。

模块化开发、初始自执行

  • 在这里插入图片描述
  • 创造独立作用域空间
  • 将函数保存在GO、随时调用
window.onload = function () {init()
}
function init() {console.log(initFb(10))console.log(initDiv(100))
}
// 协同开发
var initFb = (function () {function fb(n) {if (n <= 0) {return 0} else if (n <= 2) {return 1} else {return fb(n - 1) + fb(n - 2)}}return fb
})();
var initDiv = (function () {function div(n) {var arr = []for (var i = 0; i <= n; i++) {if (i % 3 == 0 || i % 5 == 0 || i % 7 == 0) {arr.push(i)}}return arr}return div
})();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue实现星级评价效果

希望对你们有用&#xff0c;已经自己试过可以的才发布出来的 效果如下&#xff1a; html&#xff1a; <template> <div class"evaStar"> <ul class"star"> <li v-for"(itemClass,index) in itemClasses" :class"itemC…

算法 --- 二叉树查找树的先序(中序、后序)遍历的js实现

结点: function Node(data, left, right) {this.data data;this.left left;this.right right;this.show show; }显示树的数据: function show(){return this.data; }二叉查找树: // Binary Search Tree function BST(){this.root null;this.insert insert; }添加结点到…

第三周学习

一直在练车&#xff0c;没有学习转载于:https://www.cnblogs.com/wj1998/p/9668534.html

IDEA的十大快捷键

Intellij IDEA中有很多快捷键让人爱不释手&#xff0c;stackoverflow上也有一些有趣的讨论。每个人都有自己的最爱&#xff0c;想排出个理想的榜单还真是困难。以前也整理过Intellij的快捷键&#xff0c;这次就按照我日常开发时的使用频率&#xff0c;简单分类列一下我最喜欢的…

ES5-13 对象属性遍历、this、callee、caller

链式调用 在每个函数内部return this 访问对象属性 点语法[]中括号内是字符串或是变量 数组是特殊的对象 对象属性遍历 for in(遍历对象或数组) - 不必再用Object.keys那么麻烦了 for(var key in obj){console.log(obj[key])// obj.key返回undefined// 因为js引擎会转换为…

算法 --- 顺序查找、二分查找的js实现

顺序查找: function seqSearch(arr, data) {for(let i 0; i< arr.length;i) {if(data arr[i]) {return i;}}return -1 } var arr[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]; console.log(seqSearch(arr, 15))二分查找: function binSearch(arr, data) {let low 0;let…

字符串连接(贪心)

输入n个字符串s[i]&#xff0c;你要把他们按某个顺序连接起来&#xff0c;使得字典序最小。 (1 < n < 100) (每个字符串长度 < 100) (字符串只包含小写字母) Input 第一行一个整数n。 接下来每行一个字符串s[i]。 Output 一行一个字符串表示把输入的n个字符串按某个顺…

hibernate课程 初探单表映射3-1 hibernate单表操作简介

本章简介&#xff1a; 1    单一主键 2    基本类型 3    对象类型 4    组件属性 5    单表操作CRUD实例转载于:https://www.cnblogs.com/1446358788-qq/p/8232078.html

vue --- cdn导入,一些基本操作

使用cdn导入vue.并使用vue做一些简单的操作. cdn导入vue: <script src"https://cdn.jsdelivr.net/vue/2.1.3/vue.js"></script>vue-router的CDN导入: <script src"https://unpkg.com/vue-router2.5.3/dist/vue-router.js"></scrip…

SpringBoot 2.0 pom.xml 配置(热启动)

<?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://m…

ES5-14 【utils】三目运算符、对象克隆、浅拷贝、深拷贝

浅拷贝 for-in&#xff08;遍历一个实例对象&#xff0c;原型上的属性也会打印&#xff09; Object.prototype.num 1 function shallowClone(origin, target) {for (var key in origin) {target[key] origin[key]} } var p1 {name: 人类,daughter: {first: Jessica,} } va…

java代理的原理及应用

什么是代理模式&#xff1f; 定义 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下&#xff0c;一个对象不适合或者不能直接引用另一个对象&#xff0c;而代理对象可以在客户端和目标对象之间起到中介的作用。 ——百度百科 代理模式的角色 抽象角色&#xff1a;代…

vue --- 过滤器、计算、方法、观察属性

过滤器属性:filters: <div id "app">{{num}}<br>{{num | toInt}}<br>{{num | toFloor}}<br>{{num | toCeil}}<br> </div> <script>let vm new Vue({el: #app,data:{num:3.45,},// 过滤器filters:{toInt(value){return …

《你不知道的JavaScript(上卷)》读书笔记

第一次尝试用思维导图记笔记&#xff0c;感觉还不错~~~不过还是改不了我读书笔记写成抄书笔记的毛病 。 因为开始学JS的时候&#xff0c;一般浏览器就已经支持ES6了&#xff0c;所以比较喜欢使用ES6语法&#xff0c;let&#xff0c;>等&#xff0c;文中代码不是抄书的&#…

ES5-15 数组基础、数组方法、数组排序

创建数组 字面量 var arr []构造函数 var arr new Array()不使用new var arr Array() 所有数组都继承于Array.prototype&#xff0c;能使用其中的数组方法 数组是另一种形式的对象&#xff0c;访问机制相同数组的empty项打印出来是undefined&#xff0c;empty不是值只是一个…

Centos 7 配置 NFS

安装NFS包 yum install nfs-utils.x86_64 启动NFS服务需要首先启动rpcbind服务&#xff0c;这个rpcbind包已经在上面安装好了 先配置 /etc/exports 文件 vi /etc/exports /etc/exports文件内容格式&#xff1a; <输出目录> [客户端1 选项&#xff08;访问权限,用户映射,其…

数学期望笔记

基础知识点 首先明确期望公式:\[E(X)∑_ip_i*x_i\] 其中 \(p\) 代表概率 , \(x\) 代表发生贡献。 然后期望的几点性质: 对于数学期望&#xff0c;我们还应该明确一些知识点&#xff1a; (1) 期望的“线性”性质 对于所有满足条件的离散型的随机变量\(X,Y\)和常量\(a,b\)有: \[E…

vue --- vue中的几个钩子属性

1.创建前:beforeCreate <div id"app">{{name}}</div><script>let app new Vue({el:#app,data:{name:31231312},beforeCreate(){console.log(挂在前);console.log(this.$data);console.log(this.$el);}})</script>// beforeCreate()是在Vue挂…

ES5-16【utils】数组方法、类数组

数组方法 concat 返回值是拼接后的数组 toString 将数组转成字符串&#xff0c;用逗号隔开 slice(a&#xff0c;b) [a&#xff0c;b) 不传值&#xff0c;拷贝了一份不传b&#xff0c;截取到最后一位传b&#xff0c;截取到b之前的那位a/b是负数&#xff08;和splice一样&a…

Catalan卡塔兰数

卡塔兰数 卡塔兰数是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁查理卡塔兰 (1814–1894)命名。 卡塔兰数的一般项公式为 另类递归式&#xff1a; h(n)((4*n-2)/(n1))*h(n-1); 前几项为: 1, 1, 2, 5, 14, 42, 132, 429, …