博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS基础入门篇(三十四)— 面向对象(一)
阅读量:6002 次
发布时间:2019-06-20

本文共 2088 字,大约阅读时间需要 6 分钟。

1.对象

  1. 对象的定义 : 对象 是 由 键值对 组成的无序集合。
  2. 创建对象两种方法 :

    方法一 : 字面量方法

    var obj = {name: "k"};

    方法二 : new Object( ) 构造函数创建

    var a = new Object();   a.name = "zm";   console.log( a ); // {name: "zm"}

2.面向对象和面向过程的比较

如果 想要把大象放进冰箱。

1.面向过程思想的逻辑思维是:

1.打开冰箱2.把大象放入冰箱3.关上冰箱

解析: 面向过程思想的逻辑思维是,我们先做什么,然后做什么,最后做什么。是分步骤一步一步往下走。

疑问:?️也许有许多小伙伴觉得,面向过程很符合我们的思维逻辑啊。的确如此,但是面向过程的缺点是扩展性和复用性很差。如果我们想要:

把狮子放入冰箱

1.打开冰箱2.拿出大象2.把狮子放入冰箱3.关上冰箱

把老虎放入冰箱

1.打开冰箱2.拿出狮子2.把老虎放入冰箱3.关上冰箱

2.面向对象思想的逻辑思维是:

冰箱:        打开        关上        清空                        动物:         进入

3.批量创建对象

1.通过调用函数创建对象。

解析: say 方法,每次调用函数都会生成一个新的对象,会生成新的say( )方法。所以,每次调用createObj( name,age ); ,都会生成新的say( )方法,但是每个say方法的功能都一样,这样对性能有影响。

2.通过调用函数创建对象,性能优化。

3.函数的比较

var fn1 = function(){            alert(1);        };        var fn2 = function(){            alert(1);        };        console.log( fn1 === fn2 ); // false//---------------------------------------------------        var temp = function(){alert(2)};        var fn3 = temp;        var fn4 = temp;        console.log( fn3 === fn4 );// true

解释:无论如何定义一个函数,JS解释器都会把它翻译成一个Function对象。所以每次创建一个自定义函数,都会创建一个新的对象。例如:fn1和 fn2变量都是存储对象的地址,虽然创建新对象的内容是一样的,但是在浏览器解析的时候,它会给对象创建一个地址。fn1和fn2存储的地址不相等,故fn1和fn2不相等。 fn3存储是temp接受的对象的地址,fn4存储也是temp接受的对象的地址。故fn3和fn4不相等。

4.构造函数

情况一:没有返回值,打印的是undefined。

解析:当函数没有返回值的时候,将函数调用赋给变量,打印的值是undefined。因为没有返回值。

情况二:使用 new 来调用函数,没有返回值,打印的是{}(空对象)。

使用 new 来调用函数            函数内部会自动return 一个对象        如果函数内部使用了 return X            如果 X 是一个 非null 的 对象res                那么通过new 调用 ,返回的是 res                        如果 X 是 非对象 或者 null                那么通过new 调用 ,返回的是 {}

举例说明:

进一步对情况二说明:使用 new 来调用函数的过程

使用 new 来调用函数

第一步:函数内部会自动为我们创建一个对象
第二步函数内部的 this 指向会变为 当前构造函数生成的对象
第三步:会自动return

5.通过构造函数批量创建对象

约定: 构造函数的大驼峰写法

6.prototype 原型

prototype (原型):当一个函数被申明的时候,该函数下默认有一个属性:prototype,该属性的值是一个对象。

结果为:

图片描述

当我们去调用一个对象的属性或者方法的时候,

如果该对象自身没有该属性或方法,则会调用到该对象 的 构造函数的prototype的属性或方法

把通过构造函数构造出来的对象,共有的方法或者属性,放在prototype身上,能够达到性能节约的办法。

7.__proto__

__proto__    当一个对象被创建的时候,该对象会自动被添加上一个属性:__proto__,他的值也是一个对象,并且该属性 就是 当前这个对象的构造函数的prototype    对象.__proto__ === 构造函数.prototype

8.选项卡(用面向对象的思想写一遍)

    
Title

转载地址:http://lxdmx.baihongyu.com/

你可能感兴趣的文章
自定义key解决zabbix端口监听取值不准确的问题
查看>>
入门级----黑盒测试、白盒测试、手工测试、自动化测试、探索性测试、单元测试、性能测试、数据库性能、压力测试、安全性测试、SQL注入、缓冲区溢出、环境测试...
查看>>
composer 安装 ubuntu 12.04
查看>>
微服务(二)hystrix
查看>>
Performing a thread dump in Linux or Windows--reference
查看>>
推荐系统中常用算法 以及优点缺点对比
查看>>
cocos2d-x v3.2环境配置(现在3.x版本号可以配置该)
查看>>
Go语言标准库之JSON编解码
查看>>
winpcap 发送数据包
查看>>
cisco 出现 %Error opening tftp://255.255.255.255 错误解决办法
查看>>
VIM编辑器
查看>>
IE主页被篡改 地址框变灰
查看>>
linux上架设l2tp+ipsec ***服务器
查看>>
Facebook和用户界面会如何扭曲你说的话
查看>>
安卓混合开发之Cordova,NativeWebView两种实现
查看>>
桶排序
查看>>
石化数字化交付
查看>>
如何用windows Live writer 撰写blog
查看>>
RHEL6入门系列之十九,硬盘分区与格式化
查看>>
Linux下升级 OpenSSH
查看>>