javascript高级程序设计学笔记——第五章 引用类型

《JavaScript高级程序设计》读书笔记 18 《JavaScript高级程序设计》读书笔记 18 - 引用类型之Date类型 阅读详情

对象是某个特定引用类型的实例;新对象是使用new操作符后跟构造函数来创建的,构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而存在的;

一、Object类型

创建Object实例的方式有两种,第一种是使用new操作符后面跟构造函数创建,如:

var person = new Object();
person.name = "Lily";
person.age = 13;

另一种方式是使用对象字面量表示法,对象字面量是对象定义的一种简写形式,目的是简化创建包含大量属性的对象的过程如,如:

var person = {
name : "Lily",
age : 12<span style="white-space:pre">	</span>//因为age是最后一个属性,所以不能添加逗号
};

使用对象字面量语法时,如果留空花括号,则可以定义只包含默认属性和方法的对象,如下所示:

var person = {};//跟 new Object()相同,在通过对象字面量定义对象时,实际上不会调用构造函数;
person.name = "Lily";
person.age = 12;

一般来说,访问对象属性是使用的都是点表示法,在javascript也可以使用方括号表示法来访问对象的属性,将要访问的属性名以字符串的形式放在方括号中,如下面的例子所示:

alert(person["name"]);
aler(person.name);

从功能上看,这两种访问对象属性的方法没有任何区别,但是方括号语法的主要优点是可以通过变量来访问属性,如:

var propertyName = "name";
alert(person[propertyName]);

如果属性名中包含hi导致语法错误的字符,或者属性名使用的是关键字或者保留字,也可以使用方括号表示法,如:

person["first name"] = "Lily";
person["property"] = "Lily";

二、Array类型

ECMAScript数组(Array)是有序列表,数组的每一项都可以保存任何类型的数

据,也就是说,可以用数组的第一个位置来保存字符串,用第二位置类保存Number,用第三位置来保存对象,以此类推。而且,ECMAScript数组的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新的数据;

创建数组的基本方式有两种:第一种是使用Array构造函数,如:

var colorsArray = new Array();

如果预先知道数组要保存的项目数量,也可以给构造函数传递该数量,而该数量会自动变成length属性的值,如:

var colorsArray = new Array(12);

也可以向Array构造函数传递数组中应该包含的项,如:

var colorsArray = new Array("red", "blue", "green");

在使用Array构造函数时也可以省略new操作符,如:

var colorsArray = Array(3);
var namesArray = Array("Lily");

创建数组的第二种方法是使用数组字面量表示法,数组字面量表示法有一对方括号表示,多个数组项之间以逗号隔开,如:

var colors = ["red", "blue", "green"];
var names = [];
var values = [1, 2];
var options = [1, "red"];

在读取和设置数组的值时,要使用方括号并提供相应值的基于0的索引,如:

var colors = ["red", "blue", "green"];
alert(colors[0]);
color[2] = "black";
color[3] = "brown";

数组的项数保存在其length属性中,这个属性始终会返回0或更大的值,通过设置这个属性,可以从数组的末尾移除想或向数组中添加新项,如:

var colors = ["red", "blue", "green"];
colors.length = 2;
alert(colors[2]);//undefined
var colors = ["red", "yellow", "blue"];
colors.length = 4;
alert(colors[3]);//undefined
var colors = ["red", "blue", "yellow"];
colors[colors.length] = "black";
colors[colors.length] = "brown";

1、检测数组

判断这个值到底是不是数组:isArray(value),这是一个函数;

2、转换方法

所有对象都具有 toLocaleString()、toString()、valueof()方法;

调用数组的 toString() 方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串;

调用 valueof() 返回的还是数组;

var colors = ["red", "blue", "green"];
alert(colors.toString());//red,blue,green
alert(colors.valueof());//red,blue.green
alert(colors);//red,blue.green

如果数组中的以某一项的值是null或者undefined,那么该值在 join()、toLocaleString()、toString() 和 valueof() 方法返回的结果是一个空字符串;

3、栈方法

数组可以表现得像栈一样,是一种可以限制插入和删除项的数据结构,栈是一种后进先出的数据结构。ECMAScript为数组专门提供了 push() 和 pop() 方法,使得可以实现类似栈的行为;

push() 方法可以接收任意数量的参数,把他们逐个添加到数组末尾,并返回修改后数组的长度;而 pop() 方法则从数组末尾移除最后一项,减少数组的 length 值,然后返回移除的值,如:

var colors = new Array();
var count = colors.push("red", "green");//推入两项
alert(count);//2

count = colors.push("black");//推入一项
alert(count);//3

var item = color.pop();//移除最后一项
alert(item);//black
alert(color.length);//2

4、队列方法

队列数据结构的访问规则是先进先出,队列在列表的末端添加项,从列表的前端移除项;

shift():移除数组中的第一个想并返回该项;

var colors = new Array();
var count = colors.push("red", "green");//从末尾推入两项
alert(count);//2

count = colors.push("black");//从末尾推入一项
alert(count);//3

var item = colors.shift();//从前端移除一项
alert(item);//red
alert(colors.length);//2

unshift():在数组前端添加人一个项并返回新数组的长度;

var colors = new Array();
var count = colors.unshift("red", "green");>//从前端推入两项
alert(count);//2
count = colors.unshift("black");//从前端推入一项
alert(count)//3

var item = colors.pop();
alert(item);
alert(colors.length);

5、重排序方法

reverse():反转数组项的顺序;

sort():按照升序排列数组项;

6、操作方法

concat():基于当前函数中的所有项创建一个新数组,这个方法会先创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组;在没有给 concat() 方法传递参数的情况下,只是复制当前数组并返回副本;如果传递给 concat() 方法的是一个或多个数组,则该方法会把参数数组的每一项添加到副本数组中;如果传递的值不是数组,这些值就会被简单地添加到副本数组的末尾中;

var colors = ["red", "blue", "green"];
var colors2 = colors.concat("yellow", "black");
alert(colors);//red,green,blue
alert(colors2);//red,green,blue,yellow,black

slice():它能够基于当前数组中的一个或多个项创建一个新的数组。slice()  函数可以接收一个或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice() 函数返回从参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回开始参数到结束参数之间的项——但不包括结束参数的项。注意,slice() 函数不影响原始数组,如:

var colors = ["red", "green", "blue", "yellow", "purple"];
var color2 = colors.slice(1);
var color3 = colors.slice(1, 4);
alert(colors2);//green,blue,yellow,purple
alert(colors3);//green,blue,yellow

splice()函数:

删除:可以删除任意数量的项,只需指定2个参数:要删除的第一项的位置和要删除项的数量;

插入:可以向指定位置插入任意数量的项,只需指定3个参数:起始位置、0(要删除的项数)和要插入的项,如 splice(2, 0, "red", "green");

替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必跟删除的项数相等;

splice() 函数始终都会返回一个数组,该数组中包含从原始数组中删除的项,如果没有删除的项,则返回一个空数组;

7、位置方法

indexOf():

lastIndexOf():

8、迭代方法

9、缩小方法

三、Date类型

1、继承的方法

2、日期的格式化方法

3、日期/时间组件方法

四、RegExp类型

1、RegExp实例属性

2、RegExp实例方法

3、RegExp构造函数属性

4、模式的局限性

五、Function类型

每个函数都是Function类型的实例,而且都与其他引用类型一样拥有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定;函数声明语法定义,如:

function sum (num1, num2){
<span style="white-space:pre">	</span>return num1 + num2;
}
这与下面使用函数表达式定义函数的方式几乎相差无几,如:
var sum = function(num1, num2){
<span style="white-space:pre">	</span>return num1 + num2;
};
var sum = new Function("num1", "num2", "return num1 + num2");

函数是对象,函数名是指针,由于函数名仅仅是指向函数的指针,因此函数名与包含对象指针的其他变量,也就是说,一个函数可能会有多个名字,如:
function sum (num1, num2){
return num1 + num2;
}
alert(sum(10, 10));

var anotherSum = sum;
alert(anotherSum(10, 10));

sum = null;
alert(anotherSum(10, 10));

1、没有重载(深入理解)

函数是对象,函数名是指针。创建的第二个函数,实际上会覆盖第一个的函数;

2、函数声明与函数表达式

解析器会率先读取函数声明,并使其在执行任何代码之前可用;至于函数表达式,则必须等到解析器执行到它所在的代码块,才会被解释执行;

函数声明:函数执行语句跟函数声明语句不分先后;

函数表达式:函数执行语句必须在函数表达式语句后面;

3、作为值的函数

4、函数内部属性

在函数内部,有两个特殊的对象:arguments和this。arguments有一个名叫callee的属性,该属性是一个指针,指向拥有arguments这个对象的函数;

this对象:是函数据以执行的环境对象,当在网页的全局作用域中调用函数时,this对象引用的就是window;

5、函数属性和方法

每个函数都包含两个属性:length和prototype,length属性表示函数希望接受的命名参数的个数,如:

function sayName(name){
//函数体
}
function sum(num1, num2){
//函数体
}
function sayHi(){
//函数体
}

alert(sayName.length);//result:1
alert(sum.length);//result:2
alert(sayHi.length);//result:0

prototype:是保存它们所有实例方法的真正所在;

六、基本包装类型

1、Boolean类型

2、Number类型

3、String类型

七、单体内置对象

1、Global对象

2、Math对象

第五章 JavaScript 的基本引用类型 (1)引用值(或者对象)是某个特定引用类型的实例。在 ECMAScript 中,引用类型是把数据和功能组织到一起的结构,经常被人错误地称作“类”。 (2)虽然从技术上讲JavaScript 是一门面向对象语言,但ECMAScript 缺少传统的面向对象编程语言所具备的某些基本结构,包括类和接口。**引用类型**有时候也被称为**对象定义**,因为它们**描述了自己的对象应有的属性和方法**。 阅读详情

相关推荐

开源项目实战:基于AIGC与Remotion的中文故事自动生成手绘动画视频

文本到视频(Text-to-Video)生成是AIGC领域的重要应用,其核心原理是通过大语言模型解析文本,驱动图像生成模型(如Stable Diffusion)创作画面,再结合视频编程框架进行时序合成。这项技术的价值在于将创意内容的生产流程自动化,极大提升了短视频、教育科普和营销素材的制作效率。在实际工程实践中,本地化部署与多技术栈集成是关键,例如通过本地字体渲染解决中文字幕乱码问题,以及利用Remotion框架实现灵活的编程式视频合成。本文聚焦于一个整合了图像生成、本地字体渲染和Remotion视频合成的

weixin_33827731的博客 423

【JS】JavaScript高级程序设计-第五章 引用类型

1.其他所有类型都是从Object集成了基本的行为2.Array数组常用的方法3.Date 日期相关格式化4.RegExp,提供正则表达式相关功能5.函数实际是Function类型的实例,因此函数是对象6.基本包装类型:Boolean Number String7.this的作用域。

sobergyn的博客 1190

zds1104示波器使用指南

(2)将探头连接到探头补偿端,按下auto setup按键,一键捕获。(3)连接需要测量信号,开始查看波形。操作说明书,可以自行查看操作说明书。

m0_61973119的博客 6772

JavaScript高级程序设计 第五章 — 引用类型

JavaScript高级程序设计 第五章 引用类型 Object类型 Array类型 转换方法 join方法 栈方法 push方法 和 pop方法 队列方法 shift方法 和 push方法 重排序方法 reverse方法 和 sort方法 操作方法 concat方法 sort方法 和 splice方法 JavaScript高级程序设计 第五章 — 引用类型引用类型的值(对象)是引用类型

CherishLyf 636

FreeCAD源码分析:Sketcher模块

Sketcher模块基于Part模块功能实现了特征编辑(Feature Editing)建模的功能。这类参数化建模系统主要包括几何表示、约束求解器等两大组成部分。

国产CAx(CAD/CAE/CAM)软件研发 6523

Hiblup入门指南:从下载到基础应用

本文是Hiblup软件的入门指南,详细介绍了这款遗传评估工具的核心功能与价值。Hiblup能整合系谱、基因组和表型数据,高效计算估计育种值,助力动物育种与植物遗传改良研究。文章从软件下载安装、数据格式准备,到运行系谱BLUP和基因组BLUP分析,提供了清晰的实战步骤与命令示例,帮助用户快速上手并应用于实际科研与育种工作。

weixin_29209825的博客 495

JavaScript 高级程序设计第五章学习笔记

JavaScript 高级程序设计第五章学习笔记 JavaScript 引用类并不是 class,这一点是在书中开始就反复声明的。但是找了一下 prototype 和 class 之间的区别,就觉得挺分裂的,有些地方说 JavaScript 已经实现了 class,有些地方又说没有…… 反正现在先把 class 和 prototype 是不一样的 当做定义记在脑子里面算了。 Date 和 RegExp 书中介绍了两个常见的也是用的比较多的基本引用类型:Date 和 RegExp,笔记在这里:JavaScri

GoldenaArcher的博客 448

从Android到鸿蒙:UI框架迁移的实战指南与最佳实践

本文为Android开发者提供了将应用UI框架迁移至鸿蒙系统的实战指南。文章深入对比了Android命令式编程与鸿蒙ArkUI声明式编程的核心差异,详细讲解了从环境配置、布局迁移(如RecyclerView转List)、逻辑处理到多设备适配与性能优化的全流程最佳实践,帮助开发者高效完成迁移工作。

weixin_29208077的博客 434

JavaScript高级程序设计_第五章总结笔记

JavaScript高级程序设计(第三版) 第五章 小结 对象在JS中被称为引用类型的值 Object是一个基础类型,其他所有类型从Object继承了基本的行为 Array类型是一组值的有序列表,同时提供操作和转换这些值的功能 Date类型提供有关日期和时间的信息,包含当前日期和时间以及相关的计算功能 RegExp类型是ES支持正则表达式的一个接口,提供最基本的和一些高级的正则表达式功能 函数...

bx的博客 259

C#上位机与VisionPro通用框架:视觉标定、通信联动与现场排坑实战

工业自动化设备的上位机开发,往往面临流程控制、视觉检测、通信交互等环节的重复搭建。C#作为主流工业语言,配合VisionPro视觉软件,可通过通用框架设计将状态机调度、相机采集、标定算法与串口/扫码枪通信等底层能力模块化,从而大幅降低项目交付成本。其核心原理在于:将设备工艺差异封装至配置层,视觉流程通过CogToolBlock工具链与VPP模板复用,九点标定建立像素与机械坐标系的映射关系。该方案已在螺丝锁付、点胶定位等多类产线落地,尤其适用于批量交付、换型频繁的视觉设备场景。这套从实践中沉淀的框架思路,以及

weixin_31102231的博客 339

Android自动化新方案:ESP32-C3蓝牙HID模拟触控与手势操作实战(附源码)

本文详细介绍了使用ESP32-C3通过蓝牙HID协议实现Android设备自动化操作的完整方案。该硬件方案成本低廉且能完美规避系统风控,可模拟鼠标移动、点击及复杂手势操作,延迟低于50毫秒,适用于游戏连招和应用测试等场景。文章包含完整的源码实现和性能优化技巧。

kotlin6android的博客 377

JavaScript高级程序设计学习笔记【第五章 基本引用类型】

引用值(或者对象)是某个特定引用类型的实例。在 ECMAScript 中,引用类型是把数据和功能组织到一起的结构,经常被人错误地称作“类”。虽然从技术上讲 JavaScript 是一门面向对象语言,但ECMAScript 缺少传统的面向对象编程语言所具备的某些基本结构,包括类和接口。引用类型有时候也被称为对象定义,因为它们描述了自己的对象应有的属性和方法。...

luminous-烁的博客 512

tongweb中间件selectApp.jsp存在任意文件上传(含批量验证poc)

tongweb中间件selectApp.jsp存在任意文件上传(含批量验证poc)

weixin_43567873的博客 1985

JavaScript高级程序设计---第五章 基本引用类型

JavaScript高级程序设计---第五章 基本引用类型 本章内容 理解对象 基本JavaScript 数据类型 原始值与原始值包装类型

weixin_40794404的博客 816

AI赋能合同审查:构建租赁合同智能审核系统的全流程解析

在商业地产、设备租赁等场景中,合同审核效率直接影响业务流转速度。传统人工审核存在三大痛点:审核周期长(平均2-3个工作日)、合规风险高(条款遗漏率约15%)、人力成本居高不下。智能审核系统可将审核时间压缩至秒级,风险识别准确率提升至98%以上。

理论都是虚的,代码才是王道。 1356

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

JS高级程序设计读书笔记(第一章到第五章)

我现在都到js高级程序设计最难的章节,第六章,对象,虽然有人推荐不用全部读完,但我还是完整的读一遍吧,一遍可以敲代码一边看书理解加百度,我认为这种方式很好,可以加深理解增强印象,这是我觉得这本书比JS权威指南好的地方。先就这么写,以后有了新的想法再添加。创建对象的三种方法:1,通过对象直接量(也可以称为对象字面量) var book = {name:”xiaodan”};2, 使用关键字ne

didiaidada的专栏 1763

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

JavaScript高级程序设计——第五章(引用类型)

一.Object类型 1.写法 ① var person = new Object(); person.name = 'nico' person.age = 18 ②对象字面量 var person = { name : 'nico', age : 18 } 2.获取对象属性的方法 alert(person['name']) //'nico' alert(person.name) //...

weixin_41957206的博客 294

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

JavaScript 高级笔记

JavaScript高级笔记

qq_43645678的博客 936

JavaScript高级程序设计第四版学习记录-第五章基本引用类型

第五章 基本引用类型 引用值(或者对象) 是某个特定引用类型的实例。 在ECMAScript中,引用类型是把数据和功能组织到一起的结构,经常被人错误地称作“类”。 虽然从技术上讲 JavaScript 是一门面向对象语言,但ECMAScript 缺少传统的面向对象编程语言所具备的某些基本结构,包括类和接口。 引用类型有时候也被称为对象定义,因为它们描述了自己的对象应有的属性和方法。 对象被认为是某个特定引用类型的实例。新对象通过使用new操作符后面跟一个构造函数来创建。构造函数就是用来创建新对象的函数。

qiao_qiao_happy的博客 429

js 中的引用类型(内置对象)

本篇笔记的目标是深刻理解引用类型的概念、理解基本的 JavaScript 对象类型、了解基本类型的方法和使用基本包装类型。

TKOP_的博客 3962

JavaScript引用类型

本文概述了JavaScript中变量值的两种存储方式:原始值和引用值。基本数据类型(undefined、null、string等5种)按原始值存储,使用typeof判断类型;引用类型(如Array、Date、RegExp等)是Object类型,通过instanceof判断。重点介绍了数组的动态特性及创建方式,对比了JavaScript数组与Java ArrayList的异同。同时解析了Date、RegExp、String等常用引用类型的创建和使用方法,特别说明正则表达式的组成要素和Math对象的直接调用特点

像污秽一样的博客 848

JavaScript高级程序设计阅读笔记—引用类型(object)

    最近看了很多前辈们的文章,看到很多文章都强调了基础的重要性,因此又回去看了JavaScript高级程序设计指南这本书,在这略做自己的总结作为分享,如有不正之处还是以书为准。     引用类型:引用类型是一种数据结构,用于将数据和功能组织在一起。它常常被称为类,但是这种称呼并不妥当,ECMAScript从技术讲是一门面向对象的语言,但它并不具备传统的面向对象语言所支持的类和接口等基本结构,...

zimiaoai的博客 295

JavaScript高级程序设计 笔记【第五章】引用类型

引用类型可以说是js的类,但不妥当。 object类型 创造object的方式有两种:构造和对象字面量 //构造 var person1 = new Object(); person1.name = "hello"; //对象字面量 var person2 = { name:"hello", age:"42" //最后一个不加逗号 } 获取对象的值除了点操作符还可以...

nullccc的博客 171

笔记-JavaScript高级程序设计-第五章思维导图

第五章 引用类型

lllittlemud的博客 296

JS引用类型

记录一个JS引用类型的知识点 之前学习引用类型的时候只是大致了解了什么是引用类型,它和基本数据类型的区别,比如一个是保存在栈内存,一个保存在堆内存之类的。后来在做一个栗子时出现错误,一开始没有想到是因为引用类型的关系,记录如下: 栗子出自JavaScript DOM编程艺术里面的第四章案例研究,做一个简易的图片库。主要就是通过点击超链接,将链接所包含的图片在同个窗口显示。思路是用一个占位符(placeholder)用于展示照片,当点击超链接时,获取该超链接的href属性(getAttribute方法),再修

Seay123456的博客 1848

尚硅谷JavaScript高级教程(javascript实战进阶)学习笔记

尚硅谷JavaScript高级教程(javascript实战进阶)学习笔记

m0_62516225的博客 1313
上一篇: javascript高级程序设计学习笔记——第四章 变量、作用域和内存问题
下一篇: 代码托管及版本控制平台:Bitbucket 和 Github
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值