2017-03-24 面向对象 预习笔记

in 关键字

  • 作用:
    1.检测属性,语法“属性” in 对象,返回布尔值类型
    2.遍历(对象)
var obj = {name:'zs'};
if('name' in obj){
          console.log('obj对象中存在属性 name');
}
for(var k in obj){
        //遍历对象在这里需要使用[]语法,不能使用点语法
        console.log(k,obj[k]);
}

补充数组的 for in 遍历
在数组中,索引是 key ,数组的元素是 value;

var arr = [1,2,3,4,5,6];
for(var k in arr){
        console.log(k,arr[k]);
}
//2是索引
console.log(2 in obj);
console.log(6 in obj);   //false

delete 关键字

  • 作用:
    1.删除对象中的属性
    2.删除没有用 var 关键字声明的全局变量
    注意
    1.返回值:布尔类型的值(我们可以通过该值判断是否删除成功)
    2.使用var 关键字声明的变量无法被删除
    3.删除对象中不存在的属性没有任何变化
    4.不能删除 window 下面的全局变量(使用 var 声明)但是可以删除直接定义在 window 上面的属性
  var dog = {
        name:"阿黄",
        color:"红色"
    }

    console.log(delete dog.color);
    console.log(dog.color); //undefined

    var a = 10;
    b = 20;   //没有使用var关键字声明的变量默认会成为全局变量,全局变量默认都会成为window的属性
    console.log(b);

    delete b;
    //console.log(b);
    console.log(a);

    console.log(delete a);   //删除不成功  false
    console.log(a);

    console.log(delete dog.age);   //返回的是成功还是失败?  成功


    //window
    console.log(window.a);
    delete window.a;
    console.log(window.a);

    window.demo = "demo";
    console.log(window.demo);
    delete window.demo;
    console.log(window.demo);

调试工具的使用

1.快捷键
windows F12
Mac command + ctrl + j
2.console(控制台输出)它和页面处于同一个环境
3.断点

  • 普通断点
  • 条件断点
    4.网络知识点
    网络通信:请求 + 响应
    请求:客户端向服务器索要数据的行为
    响应:服务器端把数据返回给客户端的行为
    请求的方式一共有8种,其中4种为常用的PUT/Delete/POST/GET
    请求的内部细节:
    请求头(描述信息,客户端以及请求本身的描述信息) + 请求体(参数)
    响应的内部细节:
    响应头(描述信息,服务器端以及响应本身的描述信息) + 响应体(具体数据) + 状态码

异常处理

  • 异常处理的结构
try{


}
catch(e){

}
  • 正餐情况下,如果程序出现了错误或者是异常那么该代码后面的所有代码都无法得到执行,但是,有些时候我们需要保证几遍程序出现了问题,后面的代码也能够正常执行,这种情况就可以使用异常捕获结构
  • 手动抛出异常
    语法 throw 具体的信息
    抛出的内容:字符串 + 对象
    自己编码规范:如果出错或者是有异常,那么就抛出一个对象(msg code)
    函数未定义 1001
    变量未定义 1002
    访问了错误的数据 1003
  • 完整的异常捕获结构
try{

}
catch(e){

}
finally{

}
function demo(){
        console.log('我是测试的函数');
}
try {
        var a = 0;
        console.log(a);
        a();   //报错
        //把可能出现错误的代码,放在 try 代码块中
}
catch(e){
        //如果上面的代码出现了错误,那么就会执行这个 catch 代码块中的任务
        //一般在这个代码块中要左相应的补救处理
        console.log('出错了');
        //参数 e 异常信息
        console.log(e);
}
demo();
try{
        //可能出现问题的代码
        function sum(){
                if(a == undefined){
                        //throw '请输入具体的参数!'
                        throw{
                                ErrMsg:"找不到该对象!";
                                ErrCode:1004;
                        }
                }
                console.log(a + b);
        }
        sum();
}catch(e){
        console.log(e,'____');
}
try{
        //可能出错的代码
}catch(e){
        console.log(e,'____');
        //出错了就执行这个代码块
}
finally{
        //不管是否出错,都会执行这里的代码块
        //一般在前端开发终不悔使用,多用于后端开发 Node.ks  主要用于在最后释放资源
}

DOM 操作

var divDemo = document.createElement('div');
divDemo.innerText = '测试的标签';
divDemo.style.backgroundColor = 'red';
document.body.appendChild(divDemo);
var dicTest = document.getElementByTagName('div')[0];
document.body.removeChild(dicTest);

函数和对象的创建

  • 函数的几种创建
  • 声明函数
  • 函数表达式
  • 使用构造函数创建函数对象
  • 对象的创建
  • 字面量
  • 使用构造函数创建
function 函数名称(形参1,形参2){
        //函数体
}
//调用
//函数的名称();
fuction funcName(){
}

函数表达式

var func01 = function(){
};
//命名的函数表达式
var func02 = function(){
};

构造函数创建

//没有内容(没有函数体)
var func = new Function();
func();
//等价
function funcTest (){};
var func02 = new Function("console.log('demo')");
func02;

var obj = {name:'zhangsan'};
var obj2 = new Object();
var obj3 ={};

面向对象和面向过程编程

  • 面向过程
  • 面向对象
    都是一种解决问题的思路(思想);
    面向过程在解决问题的时候,关注的是解决问题需要一个接着一个的过程(步骤);
    面向对象在解决问题的时候,关注的是解决问题所需要的对象

面向对象编程的相关概念

  • 什么是对象
    对象是具体的事物
  • 对象的特征(静态的描述信息)
    人的名字、性别、班级、年龄
  • 有的对象有行为(动态的特征)
    人的吃饭、跑步、打球
  • 现实中的对象和编码中的对象
    静态的描述信息:属性
    动态的行为特征:方法
  • 面向对象和面向过程都是解决问题的一种方式(思想),没有孰优孰劣之分,面向对象本身是对面向过程的封装
  • 面向对象编程最重要的是什么?
    找到对象(内置对象 + 自己创建)
   var dog = {
        name:"阿黄",
        age:13,
        color:"黄色",
        eat:function(){
            console.log("吃狗粮");
        },
        run:function(){
            console.log("runrunrurn");
        }
    }
    var zhangsan = {
        name:"张三",
        age:66,
        height:2.01,
        sex:"男",
        dog:dog,
        eat:function(){
            console.log("吃");
        },
        sleep:function()
        {
            console.log("睡");
        },
        liuDog:function(){
            console.log("遛狗");
        },
        coding:function(){
            console.log("_____");
        }
    }

面向对象编程的优点

  • 更方便
  • 复用性更好
  • 高内聚和低耦合(电路)
    冗余(重复的东西) ----》 封装(提取相同的部分作为函数体,抽取不同的部分作为参数)

面向对象创建并设置标签样式小案例

  var $ = {
        getEle:{
            getElementsByTagName:function (eleName) {
                return document.getElementsByTagName(eleName);
            },
            getElementsById:function (id) {
                return document.getElementById(id);
            },
            getElementsByClassName:function (className) {
                return document.getElementsByClassName(className);
            }
        },
        setStyle:{
            setBorder:function (eles){
                for (var i = 0; i < eles.length; i++) {
                    eles[i].style.border = "1px solid #002";
                }
            },
            setColor:function (eles){
                for (var i = 0; i < eles.length; i++) {
                    //......
                }
            },
            setCss:function (eles){
                for (var i = 0; i < eles.length; i++) {
                   //.....
                }
            },
        }
    }

    $.setStyle.setBorder($.getEle.getElementsByTagName("div"));
    $.setStyle.setBorder($.getEle.getElementsByTagName("p"));

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,802评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,497评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,505评论 18 399
  • 这一年考研期间,一周背两首诗吧。 一定得把数学拾起来,务必。 今天跟一个哈工程土木学长聊天,他说:他们的导师很喜欢...
    一个有点理想的文艺青年阅读 104评论 0 0
  • 想走编程道路的人,进来看看。 说基础,基础是慢慢积累的,不用一下全看完。 电脑各种硬件,一定要了解一点,这样才知道...
    悠悠君子阅读 219评论 0 0