面向对象的基础day01

1.变量的内部存储结构

变量在内存中存储的结构,和超市的储物箱很像,有一个名字(例如:01,02,03),还有一个空间(可以存放数据);

区别:在于空间中存储的信息

值类型:存储的是具体数据;

引用类型:存储的是一个引用(reference)[地址],该引用指向内存中同一块空间,他们共享内存中的同一块数据

eg:

01(变量名称)-->一个苹果(具体数据)

02(变量名称)-->苹果在超市的第二排货架的第一列(地址)

2.有关赋值的区别

赋值(=):

左边的变量 = 右边的变量

var a = 10;

解释:是把右边变量(空间中)存储的内容复制一份放在左边变量(空间中)

值类型的赋值:

赋值操作:是把右边变量(空间中)存储的内容[具体的数据]复制一份放在左边变量(空间中).

注意:修改了其中的一个变量对另一个变量没有影响.

应用类型的赋值:

赋值操作:是把右边变量(空间中)存储的值[地址]复制一份放在左边变量(空间中).

注意:修改了其中一个对象,对另一个对象是有影响的.他们共享内存中的同一块数据.

eg1:

var str1 = "string1";

var str2 = str1;        //值类型的赋值

console.log(str1 == str2);  //true

str1 = "修改";

console.log(str1 == str2);  //false

console.log(str1);      //修改

console.log(str2);      //string1

var obj1 = {

name:"张三"

}

var obj2 = obj1;   //引用类型的赋值

console.log(obj1 == obj2);      //false ? true

obj1.name = "李四";

console.log(obj1.name);   //李四

console.log(obj2.name);   //李四

//赋值操作之后,如果重新使用字面量的方式来设置对象,那么会切断和赋值对象之间的联系

obj1 = {

age:20,

name:"老王"

}

console.log(obj1.name);     //老王

console.log(obj2.name);     //李四

eg2:

var str = "string1";    //值类型

var num = 10;           //值类型

var boolT = true;       //值类型

var car = {             //引用类型

type:"奔驰",

color:"黑色"

}

//key - value

var person = {          //引用类型

name:"张三",

age:18,

car:car

}

console.log(person.name);

console.log(person.car);

图形解析:


3.值类型和引用类型在函数中的使用

(1)函数的参数:

形参:(形式参数)该变量是用来占位用的,在调用之前是没有值的,在函数内部表现是一个局部变量(param)

实参:函数调用的时候传入的参数,这个参数是有值的

(2)函数的调用:把实参的值赋给形参.

值类型数据作为函数的参数:内部修改了形参的值,对外部的实参是没有影响的;

引用类型数据作为函数的参数:内部修改了形参的值,对外部的实参有影响,他们指向的是内存中的同一块数据.

eg3:

var num = 10;

function func(a) {

console.log(a); //10

a = 20;

console.log(a); //20

}

func(num);

console.log(num);   //10

//console.log(a);

var obj = {

name:"张三"

}

function foo(paramObj) {

console.log(paramObj.name);   //张三

paramObj.name = "李老汉";

console.log(paramObj.name); //李老汉

paramObj = {

name:"老王"

}

console.log(paramObj.name); //老王

}

foo(obj);

console.log(obj.name);    //张三 ? 李老汉(正确) ? 老王

图形解析:


4.对象的动态特性

(1)javaScript中的对象和其他的大多数语言都不一样

对象支持动态特性:增加属性(方法) | 删除属性(方法) | 修改属性(方法) |查询

对象:键-值对的集合(key-value)

属性:在对象内部声明的变量

方法:在对象内部定义的函数

(2)操作对象的属性和方法可以使用一下两种:

1`.点语法

2`.中括号[]

(3)区分添加属性还是修改属性:在通过点语法的方式访问属性的时候,先检查修改属性是否存在,如果存在,那么就是修改属性,如果该属性不存在,那么就是添加.

(4)删除对象的属性

关键字:delete

语法: delete 对象.属性

5.in 关键字

作用:1.检测属性 语法 "属性" in 对象  返回值 :布尔类型的值

2.遍历(对象)

注意:遍历对象的时候,在这里必须使用[]语法,不能直接使用点语法

扩展:补充知识点

//遍历数组(array--->object)

var arr = [1,2,3,4,5,6];

for(var k in arr){

console.log(k,arr[k]);

}

//在数组中索引是key 数组的元素是value

console.log(2 in arr);//注意:前面的2是代表索引值  true

console.log(6 in arr);//false

6.delete关键字

作用:

(1) 删除对象中的属性

(2) 删除没有使用var 关键字声明的全局变量

注意:

(1)返回值: 布尔类型的值(我们可通过该值来判断是否删除成功)

(2)使用var关键字声明的变量无法被删除

(3)删除对象中不存在的属性没有任何变化,但是返回值为true

(4)不能删除window下面的全局变量(使用var声明)但是可以的删除直接定义在window上面的属性

7.js的语句结构

循环结构:for循环/while/do...while(至少会执行一次)/for...in(主要用于遍历对象)

条件结构:if..else/switch..case

8.调试工具的使用

(01) 快捷键

window  F12

Mac   OSX   command  +  option  + j

(02)console(控制台输出)他和页面处于同一个环境

(03)断点

01.普通的断点  02.条件断点

(04)网络知识点

网络通信:请求 + 响应

请求:客户端向服务器索要数据的行为

响应:服务器端把数据返回给客户端的行为

请求的方式(8):

PUT

Delete

POST

GET

请求的内部细节:

请求头(描述信息,客户端以及请求本身的描述信息) + 请求体(参数)

响应的内部细节:

响应头(描述信息,服务器端以及响应本身的描述信息) + 响应体(具体数据) + 状态码

9.异常处理

(01)异常处理结构:

try

{

}

catch(e)

{

}

(02)正常情况下,如果程序出现了错误或者是异常,那么该行代码后面的所有代码都无法得到执行,但是,有些时候我们需要保证即便程序出现了问题,后面的代码也能够正常执行,这种情况就可以使用异常捕获结构

(03)手动抛出异常

语法: throe 具体信息

抛出的内容:字符串 + 对象

自己的编码规范:如果出错或者有异常.那么就抛出一个对象(msg code)

函数未定义    1001

变量未定义    1002

访问了错误的数据  1003

(04) 完整的异常捕获结构

try

{

}

catch(e)

{

}

finally

{

}

10.DOM操作

DOM:增加 | 删除 | 修改 | 查询

需求:

01 创建一个div

02 设置div的背景颜色为红色

03 把div添加到页面中

04 获得页面中之前创建的div

05 删除

11.函数和对象的创建

(1)函数的几种创建

01 声明函数

02 函数表达式

03 使用构造函数创建函数对象

(2)对象的创建

01 字面量

02 使用构造函数来创建

11.面向对象和面向过程的区别

(1)两种方法都是一种解决问题的思路(思想)

面向对象:在解决问题的时候,关注的是解决问题需要的一个接着一个的过程(步骤)

面向过程:在解决问题的时候,关注的是解决问题所需要的对象

(2)现实中的对象和编码中的对象

静态的描述信息:属性 :定义在对象中的变量

动态的行为特征:方法 :定义在对象中的函数

(3)为什么要使用面向对象编程?

01 更方便

02 复用性会更好

(4)高内聚和低耦合(电路)

冗余(重复的东西)-->封装(提取相同的部分作为函数体,抽取不同的部分作为参数)

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

推荐阅读更多精彩内容

  • #1.面向对象的相关概念 01 对象是什么? 什么都是对象,对象是具体的事物; 02 对象的描述信息(静态特征) ...
    Ainy尘世繁花终凋落阅读 255评论 0 0
  • 一、面向过程和面向对象的区别、联系 1.面向过程编程:注重解决问题的步骤,分析问题需要的每一步,实现函数依次调用。...
    空谷悠阅读 899评论 1 11
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,777评论 2 17
  • 一、JavaScript基础知识回顾 1.1 JavaScript 1.1.1 javascript是什么? Ja...
    福尔摩鸡阅读 1,290评论 0 7
  • 再过两周,英语四六级考试就要开始了。很多同学面对四六级考试,心中没底,如临大敌。你以为四六级备考只是做一套套真题卷...
    二杯清茶阅读 40,071评论 128 879