美文网首页
task40 来,面向对象编程吧!

task40 来,面向对象编程吧!

作者: vivienYang2019 | 来源:发表于2019-06-04 22:45 被阅读0次

这节课好多内容没搞懂!!!需要再看看


预习: 没有复习!!!


  1. 程序员也不知道什么是面向对象
  2. MDN 给了我们一堆术语

请尝试理解面向对象,并背诵 MDN 里的以下内容

Class 类
定义对象的特征。它是对象的属性和方法的模板定义.
Object 对象
类的一个实例。
Property 属性
对象的特征,比如颜色。
Method 方法
对象的能力,比如行走。
Constructor 构造函数
对象初始化的瞬间, 被调用的方法. 通常它的名字与包含它的类一致.
Inheritance 继承
一个类可以继承另一个类的特征。
Encapsulation 封装
一种把数据和相关的方法绑定在一起使用的方法.
Abstraction 抽象
结合复杂的继承,方法,属性的对象能够模拟现实的模型。
Polymorphism 多态
多意为‘许多’,态意为‘形态’。不同类可以定义相同的方法或属性。

问题:1||2的值是多少?


image.png

js的或操作符(a||b)和且操作符(c&&d)的值基本上不可能是true/false
五个falsy值:'',0,NaN,null,undefined


image.png
console.log(3)的值是undefined
  • 用&&操作符的时候,找假值,返回找到的第一个假值
    如果没有找到假值,就返回最后一个真值
    1&&2&&3 //结果是3
  • 用||操作符的时候,找真值,返回找到的第一个真值


    image.png

    理解 var a = a || {}什么意思

var a = a || {}
//等价于
if(a){
  a=a
}else{
  a={}
}

用来防止覆盖之前a的值(危险代码)

image.png
理解命名空间
// 全局命名空间
var MYAPP = MYAPP || {};
// 子命名空间
MYAPP.event = {};

讲义


箭头函数内外的this是同一个???


image.png
image.png
  • 封装view


    封装View.png
获取view_原.png
获取view_现.png
  • 封装model


    model_原.png
    封装Model.png
    image.png
使用model.png
image.png
image.png

save方法也需要改,怎么改???
用到了闭包

你办事,我放心
model办事,我放心

image.png image.png
image.png
image.png
controler的使用和定义.png
model的使用和定义.png
view的使用和定义.png

封装 Model View Controller

完整代码:https://github.com/FrankFang/resume-15-8

  1. controller === object
  2. controller.init(view, model)
    controller.init.call(controller, view, model)
    那么 controller.init 里面的 this 当然 TM 是 controller
    也就是这个1里面的object
    controller.init 里面的 this 就是 object
    object.init 里面的 this 就是 object
  3. initB.call(this)
    initB 里面的 this === call 后面的this
    call 后面 this === 第二条里的 this
    第二条里面的 this === object
    => initB 里面的 this 就是 object

复习 this

问题⬇️


image.png
image.png
image.png

google mdn onclick


image.png image.png
button.onclick = function f1(){
    console.log(this) // 触发事件的元素。  button
}

button.onclick.call({name: 'frank'})

button.addEventListener('click', function(){
    console.log(this) // 该元素的引用 button
}
2 结果

$('ul').on('click', 'li' /*selector*/, function(){
    console.log(this) //this 则代表了与 selector 相匹配的元素。
    // li 元素
})
3 结果
去看 on 的源码呀 -> 做不到
jQuery 的开发者知道 onclick 的源码,f1.call(???)
jQuery 的开发者写了文档
看文档呀

this是call()的第一个参数,看不到call()就不能确定this是什么,智能去看对应的文档说明,看看this指的是什么!!!

function X(){
    return object = {
        name: 'object',
        options: null,
        f1(x){
            this.options = x
            this.f2()  //调用的是A还是B?
        },
        f2(){
            this.options.f2.call(this)  //A?this 是啥 ?
        }
    }
}

var options = {
    name: 'options',
    f1(){},
    f2(){
        console.log(this) //B?this 是啥 ?
    }
}

var x = X()
x.f1(options)

答案:B options


image.png

答案:D object


image.png
答案:object

new 的作用

https://zhuanlan.zhihu.com/p/23987456

image.png image.png
image.png

var object = new Object()

自有属性 空
object.proto === Object.prototype

var array = new Array('a','b','c')

自有属性 0:'a' 1:'b' 2:'c',length:3
array.proto === Array.prototype
Array.prototype.proto === Object.prototype

var fn = new Function('x', 'y', 'return x+y')
自有属性 length:2, 不可见的函数体: 'return x+y'
fn.proto === Function.prototype

Array is a function
Array = function(){...}
Array.proto === Function.prototype

课后习题:

同学的

相关文章

  • task40 来,面向对象编程吧!

    这节课好多内容没搞懂!!!需要再看看 预习: 没有复习!!! 程序员也不知道什么是面向对象 MDN 给了我们一...

  • python面向对象

    什么是面向对象 面向对象编程是一种编程方式,此编程方式需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其...

  • c#面向对象编程

    面向对象的编程,其实就是用现实中的思维方式来编程。 面向对象编程的3个方式:封装,继承,多态。 而提到面向对象编程...

  • 关于python中面向对象(一)

    什么是面向对象? 面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对...

  • 13-类

    面向对象 面向对象编程:OOP是利用“类”和“对象”来创建各种模型开实现对现实世界的描述,使用面向对象编程的原因一...

  • 面向对象_初识

    目录 面向对象编程介绍 类与对象介绍 私有属性与私有方法 面向对象编程 1. 面向对象编程介绍 面向对象编程:Ob...

  • 谈谈面向对象编程

    何为面向对象编程 面向对象编程简介 面向对象编程(Object-oriented Programming,缩写:O...

  • 面向对象基础

    面向对象编程包括: 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程实现(OOP) 面向对象思想...

  • python-day14

    一、面向对象编程 编程思想:1.面向对象编程 --> 算法,逻辑2.函数式编程 --> 函数3.面向对象编程 ...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

网友评论

      本文标题:task40 来,面向对象编程吧!

      本文链接:https://www.haomeiwen.com/subject/lthrxctx.html