摘要:
◼ 面向对象的三大特性:封装、继承、多态。 前面两个我们都已经详细解析过了,接下来我们讨论一下JavaScript的多态。 ◼ JavaScript有多态吗? 维基百科对多态的定义:多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口,或使用一个单一的符号来表示多个不同的类 阅读全文
摘要:
原型继承关系 1.p1是Person的实例对象 2.obj是Object的实例对象 3.Function/Object/Foo都是Function的实例对象(__proto__ 都等于 Function.prototype) 4.原型对象默认创建时, 隐式原型都是指向Object的显式原型的(Obj 阅读全文
摘要:
对象的方法补充 ◼ hasOwnProperty 对象是否有某一个属于自己的属性(不是在原型上的属性) ◼ in/for in 操作符 判断某个属性是否在某个对象或者对象的原型上 ◼ instanceof 用于检测构造函数(Person、Student类)的pototype,是否出现在某个实例 阅读全文
摘要:
原型链的查找顺序 面向对象的特性–继承 ◼ 面向对象有三大特性:封装、继承、多态 封装:我们前面将属性和方法封装到一个类中,可以称之为封装的过程; 继承:继承是面向对象中非常重要的,不仅仅可以减少重复代码的数量,也是多态前提(纯面向对象中); 多态:不同的对象在执行时表现出不同的形态; ◼ 那 阅读全文
摘要:
对象和函数的原型 认识对象的原型 ◼ JavaScript当中每个对象都有一个特殊的内置属性 [[prototype]],这个特殊的对象可以指向另外一个对象。 ◼ 那么这个对象有什么用呢? 当我们通过引用对象的属性key来获取一个value时,它会触发[[Get]]的操作; 这个操作会首先检查该 阅读全文
摘要:
对象的增强知识补充 ◼ 在前面我们的属性都是直接定义在对象内部,或者直接添加到对象内部的: 但是这样来做的时候我们就不能对这个属性进行一些限制:比如这个属性是否是可以通过delete删除的?这个属性是否在forin遍历的时候被遍历出来呢? ◼ 如果我们想要对一个属性进行比较精准的操作控制,那么我们 阅读全文
摘要:
◼ JavaScript历史的局限性: 长久以来,JavaScript 不断向前发展且并未带来任何兼容性问题; 新的特性被加入,旧的功能也没有改变,这么做有利于兼容旧代码; 但缺点是JavaScript 创造者的任何错误或不完善的决定也将永远被保留在JavaScript 语言中; ◼ 在ECM 阅读全文
摘要:
with语句的使用 with语句 扩展一个语句的作用域链。 <script> var obj = { message : "Hello World" } with (obj) { console.log(message) } </script> ◼ 不建议使用with语句,因为它可能是混淆错误和兼容 阅读全文
摘要:
◼ 组合(Compose)函数是在JavaScript开发过程中一种对函数的使用技巧、模式: 比如我们现在需要对某一个数据进行函数的调用,执行两个函数fn1和fn2,这两个函数是依次执行的; 那么如果每次我们都需要进行两个函数的调用,操作上就会显得重复; 那么是否可以将这两个函数组合起来,自动 阅读全文
摘要:
◼ 柯里化也是属于函数式编程里面一个非常重要的概念。 是一种关于函数的高阶技术; 它不仅被用于JavaScript,还被用于其他编程语言; ◼ 我们先来看一下维基百科的解释: 在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化; 是把接收多个参数的函数,变成接受一个单一参 阅读全文