• 初步走向面向对象


    A.

    学习一门语言,入门需要掌握:关键字,字符串的操作,集合操作(数组,键值对),文件(js没有)。讲的是基于ECMAV3版本过渡到V5的版本 V6

    1.别的语言面向对象都来源于c++

    2.94-95年,为了表单验证(验证邮箱,注册等)JavaScript里面面向对象就是键值对的集合,  为了看起来像c++语言,引入许多的语法糖

    3.函数也是变量,跟字符串abc,数字123都一样。键值对也是变量。复合类型(对象类型) 就由基本类型组合而成。

      基本类型:(number,string,boolean),大写的是一个包装类型,是一个包装构造函数, 是一个包装对象。

      复合类型:Number,String,Date,Array,Object,RegExp,Function,Math

    4.typeof是string类型

    5.in运算符------------是判断一个对象里面是否具有某个属性

      语法:boolean“name”in Object

    6.判断对象有某个属性成员还可以怎么处理?w7 IE8; XP IE6

    7.函数或者方法也是一个变量名,不加(),就直接访问变量

    浏览器能力检测的代码

    ifdocument.getElementdByClassName{

    //有该方法

    }else{

    //没有该方法

    }

    鸭子辨型(只要具有鸭子的特征,就是鸭子)

    JavaScript中创建对象用new运算符,字面量(直接量)

    区别:new+构造函数,可以复用

    直接量直接使用

    //引出重要:值类型,引用类型(对象)

    值类型:存在栈上,按值传递(将变量中的数据完整的拷贝一份, 赋值给新的变量

    引用类型:引用类型表示变量存储的是数据的地址( 引用 )  地址一般是利用指针来操作的

    关联数组

    B.

    var o3={

     n:[1,2,3],

     m:{n:123}

    }

    javascript是没有办法访问地址

    解析引擎会把nm绑定在一起,访问就快

    function就是重复执行的代码块

    1.逻辑中断

    1. ||

    如果第一个为真 就返回第一个表达式, 如果为假 则返回第二个表达式

      &&

    如果第一个为假 就返回第一个表达式, 如果为真则返回第二个表达式

    **************表达式1 && 表达式2 && 表达式1*********

    先验证是否满足 表达式1 如果满足 就执行表达式2 的验证

    验证如果失败返回 假

    验证如果成功返回 表达式

    2.delete 删除 运算符

    语法:  boolean  delete 数据;

    功能: 在当前作用域上删除数据

    用法:

    1,删除数组中的一个元素(不会删除数组长度,会当成undefined)

    2,删除一个对象的属性或方法(jquery中的缓存框架,像数组的键值对)

    3,删除一个没有用 var 声明 变量

    3.报错会结束代码的运行异常处理

    1.try-catch是if-else的增强

     有些时候代码的错误是需要处理的, 但是又不清楚是否会在这里报错

     try-catch 的语法:

    try {

        //可能出现错误的代码

    } catch ( e ) { // 可以打印e.name 错误类型 e.massage  详细错误信息

    //如果出现错误才会执行

    } finally { // 可选

    //无论是否出现异常, 最后执行

    }

    * 这里的错误有一个术语叫 异常 exception

    // try 试一下

    //catch 抓住 ------ 异常

    *  自己抛出异常(自定义错误)

       throw

     语法: throw 对象    //throw new Error( msg )

      一般对象是 new Error( '错误消息' );

    4.函数的创建

    1.声明式函数,可以在上面调用(js解析过程)

    2.函数的字面量(Lambda表达式)------------ 此时函数作为 表达式 存在

      凡是将数据 和 运算符等联系起来有值的式子就是表达式

      注:函数的声明式不允许出现在表达式中(如果写了,要么报错,要么默认转换为表达式)   函数的字面量允许出现在任何地方.

    3.new Function

    //比较全的查询

    1. Mdn---------

    2. w3school----------入门,不全

    C.

    传统的构造函数的方式

    1.对象

    从代码的角度考虑:键值对的集合

    2.什么是面向对象?(从两个方面回答)

      1>.面向对象和面向过程的思想

      2>.JS中的面向对象和其他语言中的面向对象的表现形式

      面向过程:所有的细节步骤过程必须一步一步亲力亲为,顺序不能颠倒

      面向对象:找到能够完成这个功能的对象。执行者变为调度者(管理者),对象还是面向过程。

       总:面向对象是对面向过程的包装。

    3.为什么面向对象--全局污染

      在js中重复的var无效

      便于开发,污染更少,便于维护

    4.面向对象的基本模型

     1>.将数据和功能封装成函数(方法)

     2>.将相关的功能绑定到一块(对象)

     3>.将功能进行分组(模块)

    5.DOM操作复习

      html作为一个字符串很难处理,把它看成“对象”好操作。

       增:增加元素,增加属性,增加内容

       删,改,查,其他(CSS--轮播图)

       DOM是典型的面向对象

     

    6.json的表示法,对象的直接量(把变量打包)

    Var p={

    ‘Name’:”jim”,

    ‘Age’:  ,

    ‘Sex’:

    };

      json 对象的方法:简单,方便,简洁,复用不高的可以用

      使用 json 对象的方法有一个缺点: 无法复用

     

     构造方法也是一个函数,就是为了复用

      1>.构造函数命名一般首字母大写(但并不是绝对)

      2>.构造函数(构造函数里面不需要return,它的return有别的含义)

      3>.为对象添加成员使用this.成员名=(利用对象的动态特性给对象添加成员)

      缺:每次都写。。。。。。。。。。所以要传参

    7.在参数中写变量的好处是:

      1>.相当于声明了变量,

      2>.调用时又一次赋值

      在JS里面写函数,尽量的把名字写的越短越好。

       在js中重复的var无效

       形参:形式参数,占位符

       实参:实际传的参数

     Token:表示语法错误

    构造函数方法的复用

    电脑很卡的话:放固态,放内存

    Cpu解码硬盘中的文件,那会非常的慢,传统的硬盘是叫机械硬盘(光盘+机械粒),

    机械粒有硬盘损耗

    1G=1024M

    Cpu的主频: 1秒钟能执行多少条指令

    固态硬盘-------->内存------->缓存

    JavaScript不是原生的代码,是寄宿在浏览器里运行的代码

    分析的结论:

    1.JavaScript运行是需要内存的

    2.按之前的方式写,表示每一个函数都具有那个函数的一个副本,比较消耗内存

    所以我们希望方法共享

     

    原型(prototype

    在函数里面,有一个属性,叫prototype,只要是函数,就有Prototype属性

    由该函数创建的对象会默认连接到该属性上,Prototype也是一个对象

    在访问对象的某一个属性(方法)的时候,首先会在当前对象中查找有没有该属性。

    如果当前对象没有,就会在构造方法的定义规则中查找。(当前对象)

    如果没有,就会到与对象联系起来的构造函数的prototype属性中找。

    以上3点总结起来1句话在访问一个对象属性的时候,首先在当前对象中找,如果没有在其原型对象(创建它的构造函数的原型属性)中找。

    对象会到与它联系的Prototype中找数据,可以考虑将共享的数据,放到里面。这样,无论调用几次,都只有一个副本。

    调试:__proto__是灰色的,说明不是当前对象里面默认的

    对象中有一个属性,叫__proto__

    通过调试可以发现 : 对象的__proto__与创建它的构造函数prototype , 是同一个东西。

    __proto__是非标准属性(IE8不支持),将来可能会归为标准属性。在开发时尽量不要使用它

    F.prototype  原型属性

    O.__proto__ 原型对象

    F.prototype 是构造函数F 的 原型属性

    F.prototype 是对象O的 原型对象

    注:以上的描述在将来工作中或许会改变,因为它没有被规范化

    小结:

    1.面向对象的复习   

    2.为什么要使用面向对象  

    3.面向对象带来的一些优势:作为一个开发者或对象的创建者,优势并不是很大,因为代码  量更大,更复杂了;但是如果用创建的对象来做,进行二次开发(比如用jQuery),会提高你的开发效率

    面向对象是找对象帮你做事,但它本身可能是面向过程的

    基本类型转化。。。

    内置对象里的方法array对象 data对象 math方法.....

              四舍五入一定要掌握,在不同的浏览器精度处理是不一样的

    函数的操作要敏感,每写一句代码都问自己为什么

    为什么最后封装那么写?因为传统的构造函数会浪费我们的内存

    为什么写构造方法?因为对象的字面量不能复用

    为什么要写对象?因为繁复的方法放在作用域当中,会影响到我全局作用域当中的其他变量

    为什么写函数?因为很长的代码写的容易出错

    DOM的操作,DOM属性和方法parentnode,nextsbling,previousSbling,firstchild,lastchild,元素节点(nodetype=1)和文本节点的区分(nodetype=3),属性节点(nodetype=2)nodetype=11 ?  

    属性操作:getAttribute,setAttribute

    appendChild,insertbefore.......

    函数就是在定义一个公式,一个规则,先做什么,再做什么。。。。。。。。在做这个公式的时候,需要替代的东西,把它变成参数

  • 相关阅读:
    Random 种子问题
    Matrix issue
    Two sum.
    Best Time to Buy and Sell Stock
    Maximum difference between two elements
    二分查找法的实现和应用汇总
    Why you want to be restrictive with shrink of database files [From karaszi]
    Palindrome
    NetBeans vs Eclipse 之性能参数对比 [java060515]
    国内各大互联网公司相关技术站点不完全收录[转]
  • 原文地址:https://www.cnblogs.com/ting-0424/p/5659167.html
Copyright © 2020-2023  润新知