第四阶段 — jsoo

2024-04-07 15:58
文章标签 第四阶段 jsoo

本文主要是介绍第四阶段 — jsoo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、jsoo介绍

1、概念:jsoo称为js面向对象,又可以叫做js高级。

        oo:面向对象 — 以类为基础(java)

        oop:面向对象编程

        面向对象编程:类和对象(类是对象的抽象,对象是类的实例)

        面向对象它是一种思想,任何语言都可以用,js中也可以使用。

2、js面向对象(原型对象、实例对象)— 基于原型,只有对象没有类

        (原型对象是实例对象的抽象,实例对象是原型对象的实例

        原型对象就是模板。示例:

function prototyPlane(x,y,imgSrc,speed){this.x = x;this.y = y;this.imgSrc = imgSrc;this.speed = speed;this.moveDown = function(){}this.init = function(){}
}
let newPlane = new prototypePlane();

3、面向对象的三大特性封装、继承、多态

        封装:隐藏内部实现,暴露接口(重点)

        继承:共性

        多态:个性

拓展:面向过程 — 以函数为基础(C语言、C++)

顶层对象为Object(null)

二、创建对象的方法

        1、构造函数的方法

function test(name,age){//let this = new Object();this.name = name;this.age = age;//return this;
}
new test();

        2、工厂方法

function test(name,age){let obj = new Object();obj.name = name;obj.age = age;obj.hi = function(){}return obj;
}

        3、原型

function test(){}
test.prototype.name = xxx;
test.prototype.age = xxx;

        4、

var obj = new Object();
obj.name = "zhangsan";
obj.age = 18;
obj.sayHi = function(){}

        5、

var obj = {    //语法糖name:'lisi',age:16,sayHi:function(){}
}

        6、重点

Object.create();    //重点
var obj = Object.create(null);    //等价于var obj = new Object()或var obj = {}
Object.create(proto,[propertiesObject])

三、引用类型(堆)与原始类型(栈)

        引用类型的拷贝默认是浅拷贝,如何让其实现深拷贝?

var arr = [123,545,34];
function change(arr2){arr2 = [];
}
change(arr);
console.log(arr);

        原始类型的拷贝:相当于钱的复制

        引用类型的拷贝:相当于卡的复制 

        垃圾回收机制(防止内存的溢出):没有任何变量指向它时,就会被回收。

四、__proto__属性

        __proto__属性:js语言内部实现,私有的一个属性。追溯自身来源(顶层Object.Object.__proto__是null)。

        IE浏览器中不支持__proto__属性。

        实例对象.__proto__

        prototype属性:专门提供给用户进行原型的操作。只有函数对象有这个属性。

什么是函数对象?什么是普通对象?

        函数对象:typeof对象,如果为function,就说明它是函数对象。

__proto__与prototype区别:

       1、 __proto__是一个私有属性,IE不支持;prototype是一个开发接口。

        2、__proto__是js内部用于追溯自身原型的属性,是任何对象都有的属性;prototype属性只有函数属性有。

        3、建议使用prototype属性来进行原型相关的操作。

xiaoai.__proto__ === Student.prototype    //true
xiaoai.__proto__.constrctor === Student    //true
Student.prototype.constrctor === Student    //true

五、原型链

        工作模式:从自身出发,一层一层向上找,直到找到为止。没有找到就返回undefined。

        原型对象,new出来对象两不同的对象。

        注:如果你想要继承另一个对象里定义的属性(构造函数),需要将原型只想另一个对象的示例。

        使用场景:处理日期

Date.prototype.toDoubleyongString = function(str){var d = new Date(str);var year = d.getFullYear();
}

六、对象的操作

        1、销毁对象

var obj = new Object();
obj = null;

        2、删除对象的属性

var zhangsan = {name:'zhangsan',age:18
}
delete zhangsan.age;

        3、检查某个对象是否为某个构造函数的实例

                检查的对象instanceof构造函数:返回true或false。

        4、判断某个对象是否包括某个属性:返回true或false(整个原型链上进行判断)

                in关键字,示例:

console.log("name" in zhangsan);

        5、判断是否是对象自身的属性hasOwnProperty

zhangsan.hasOwnProperty("toString")

七、作用域

        全局变量:函数外定义的变量

        局部变量:函数内定义的变量

注:全局变量都可以访问;局部变量只有定义它的函数可以访问。

变量与函数的提升

变量的定义和函数的定义,两者会提升

(浅拷贝、深拷贝、for...in、for...of、es6中数组的方法)

原理:高内聚、低耦合

这篇关于第四阶段 — jsoo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/883032

相关文章

就业班 第四阶段(k8s) 2401--6.5 day3 Yaml语法解析+钩子函数

Yaml语法解析 今天学的都是在pod里面操作的 格式 这个文件要创建的资源对象是什么 kind: Pod 这个资源对象所在的api版本是什么 apiVersion: v1 元数据 metadata: 对这个pod中的镜像的描述 spec: 字典无序 同一级可以调换顺序 :比如kind和apiVersion 当写mysql.yml 不知道到那个状态的时候,可以docker p

113、python-第四阶段-10-正则表达式-元字符匹配

为啥这个找到了呢,咱们看一下,这个少了一个开头和结尾,如果从开头开始肯定是不符合的,进行下边的修改

就业班 第四阶段(docker) 2401--5.29 day3 Dockerfile+前后段项目若依ruoyi

通过Dockerfile创建镜像 Docker 提供了一种更便捷的方式,叫作 Dockerfile docker build命令用于根据给定的Dockerfile构建Docker镜像。 docker build语法: # docker build [OPTIONS] <PATH | URL | -> 1. 常用选项说明--build-arg,设置构建时的变量--no-cache,

OK6410A 开发板 (八) 36 linux-5.11 OK6410A 内存管理第四阶段

D mm_init->mem_init返回 -> mm_init->kmem_cache_init返回----此时slab建立,开启了基于 buddy内存管理器时代 的 slab内存管理器时代 kmem_cache_init此过程以 slab 为基础,通过slab 的api kmem_cache_create , 创建 很多个 slab假设这么多个slab 为 一个集合A这么多slab 就是

4.1网安学习第四阶段第一周回顾(个人学习记录使用)

本周重点 ①Nmap的使用 ②MSF的使用 ③XRAY / Dirb / AWVS / FSCAN 的使用 ④Nessus的使用 ⑤MsfVenom木马制作 ⑥反弹shell的各种实现方式 本周主要内容 DAY1 一、课程介绍 第一阶段 :网络 和 协议 以及 等保 ,主要是对于网络整个安全的架构设计 ,偏重于企业层面 和 组织层面 ,没有技术细节 主要是假设网络 第二阶段

jsoo day02 — 封装和继承

一、为什么要封装?         1、使用更加便捷(组件形式)         2、给用户实现,但是不想修改 二、封装的作用         1、实现功能         2、把死的变成活的(把具体的值写成参数)         3、独立的功能,可以单独提取成一个方法(高内聚)         4、 让用户更方便(包容性更强,method支持大小写,参数可以写成字符串,也可以写对象

C语言从入门到熟悉------第四阶段

指针 地址和指针的概念 要明白什么是指针,必须先要弄清楚数据在内存中是如何存储的,又是如何被读取的。如果在程序中定义了一个变量,在对程序进行编译时,系统就会为这个变量分配内存单元。编译系统根据程序中定义的变量类型分配一定长度的空间。内存的基本单元是字节,一字节有8位。每字节都有一个编号,这个编号就是“地址”,它相当于旅馆的房间号。在地址所标示的内存单元中存放的数据,就相当于在该旅馆房间中居住的

【Linux云计算架构:第四阶段-Linux虚拟化-私有云-docker】第3章——字符界面安装KVM + 阿里云主机使用方法

本节所讲内容: 3.1 在命令行安装 KVM 虚拟机 3.2 在命令行无人执守安装 KVM 虚拟机 3.3 阿里云主机使用方法 3.1 在命令行安装 KVM 虚拟机 3.1.1 实战 1:在命令行安装 KVM 虚拟机 准备环境: [root@xuegod63 ~]# mount /dev/sdb1 /var/lib/libvirt/images/上传 F:\workstation2\i

JSOO Day 04 设置模式

设计模式就是可重用的用于解决软件设计中一般问题的方案。 其中一个原因是它可以让我们站在巨人的肩膀上,获得前人所有的经验 保证我们以优雅的方式阻止我们的代码,满足我们解决问题 怎么才能更称之为设计模式? 1,模式名称 2,该模式所能解决的问题 3,解决方案 4,使用该模式的效果(优点和缺点) 具体了解还可以看看《大话设计模式》 为什么要学习设计模式 1,模式是行之有效的解决方法:他们提供固

JSOO Day02 封装

1,为什么要封装 1.1可以重复使用(组件(页面的划分),模块(功能的划分)) 1.2隐藏内部实现,暴露接口给提供用户使用 重点:隐藏内部实现,在进行暴露 隐藏内部实现:写在一个函数里,并且进行自执行 (function(){})() 暴露: 1,通过widow来公开变量或方法(即:定义全局变量) 2,通过return的方式 返回对象 原则:封装原则,高内聚,低耦合 封装组件: 1,提供实现