js高程笔记4-5章

第四章 变量/作用域和内存问题

1.从一个变量给另一个变量赋值时,如果是赋基本类型值,是创建一个值副本,两个变量操作互不影响。如果是赋引用类型值,是创建一个引用(指针)的副本。两个变量指向同一个对象,操作互相会影响。

2.函数传参时,如果传基本类型值,函数局部作用域修改值不会再全局作用域体现出来。传引用类型值,局部作用域修改对象会在全局作用域体现出来。P71

3.检测基本数据类型用typeof,检测引用类型值时,想知道是什么类型的对象,用instanceof。

4.js没有块级({})作用域,一个function里的变量都是透明的。

5.确保占用最少的内存可以让页面获得更好的性能。而优化内存占用最好的方式,是为全局变量和全局对象的属性解除引用——不再用时将值设置为null。

第五章 引用类型

1.引用类型有Object、Array、Date、RegExp、Function(函数实际上是实例)、基本包装类型(Boolean、Number、String)、Global、Math。

2.所有对象都具有toLocaleString(),toString(),valueOf()方法。

3.引用类型Object的表示方法有两种:

 1 //构造函数方法
 2 var person = new Object();
 3 person.name = "xiaoming";
 4 person.age = 29;
 5
 6 //对象字面量方法
 7 var person = {
 8     name : "xiaoming",
 9     age : 29
10 };

4.引用类型Array每一项可以保存不同类型的数据,它的表示方法有两种:

1 //构造函数方法
2 var color = new Array();
3 var color = new Array(3);
4 var color = new Array("red","blue","green");
5
6 //数组字面量
7 var color = [];
8 var color = ["red","blue","green"];

5.数组的各种方法:

栈方法:push()尾部插项,返回数组长度,

       pop()尾部删项,返回被删项。

队列方法:shift()头部删项,返回被删项,

     unshift()头部插项,返回数组长度。

排序方法:reverse()反转数组,

     sort()默认按字符比较方法排序,可以加比较函数。P93

操作方法:concat(),slice(),splice()

位置方法:indexOf(),lastIndexOf()

迭代方法:every(),some(),filter(),map(),forEach()

归并方法:reduce(),reduceRight()

6.RegExp类型可以用字面量定义,也可以用构造函数定义(双重转义)

7.RegExp类型的方法:exec()和test()

8.函数名仅仅是指向函数对象的指针,函数定义方法有两种:

1 //函数声明
2 function sum(a,b){
3     return a+b;
4 }
5
6 //函数表达式
7 var sum = function(a,b){
8     return a+b;
9 };

9.函数名只是函数类型的一个变量,声明两个同名函数只是将变量替换,因此函数没有重载,也因此函数可以作为值通过函数名这个变量被传递和返回。

10.函数内部有两个对象:arguments和this

  arguments是函数参数数组,arguments.callee指向函数。

  this指向当前执行的环境对象。

11.函数作为对象,有自己的属性和方法。

  属性:length命名参数的个数。

     prototype保存所有实例的方法。

  方法:apply()和call()功能一样,区别在于函数第二个参数call是逐个列出参数,apply可以使用数组。这两个函数的重要作用是扩充函数作用域。P117和P114的栗子

     bind()绑定(手动指定)函数的作用域。

12.基本包装类型不建议显式创建(使用new),在创建使用相应的基本类型值时,后台会自动创建相应的基本包装类型。

13.基本包装类型String方法:

字符方法:charAt()和charCodeAt()

操作方法:concat(),slice(),substr(),substring()

位置方法:indexOf(),lastIndexOf(),trim()

大小写转换方法:toLowerCase(),toLocaleLowerCase(),toUpperCase(),toLocaleUpperCase()

模式匹配方法:match(),search(),replace(),split()

localeCompare()方法

fromCharCode()方法

14.Global对象,是单体内置对象,本身就存在,不用手动实例化。浏览器将这个全局对象作为window对象的一部分加以实现。例如Object、Array、String、Global、Math。

URI编码方法:encodeURI(),encodeURIComponent(),decodeURI(),decodeURIComponent()

eval()方法

15Math对象,相关方法:min(),max(),ceil(),floor(),round(),random()...

时间: 2024-10-14 04:33:17

js高程笔记4-5章的相关文章

js高程笔记16-20章

第16章 HTML5脚本编程 1.跨文档消息传送XDM:向包含在当前页面的<iframe>元素或由当前页面弹出的窗口传递数据. 原窗口发送:postMessage(内容,目标域名) 目标窗口接收后触发window对象的message事件,event对象的属性有data,origin,source 2.原生拖放: 拖放事件:拖放元素上dragstart,drag,dragend,放置元素上dragenter,dragover,dragleave或者drop dataTransfer对象:even

js高程笔记1-3章

第1章 js简介 1.js由三部分组成,ECMAScript, DOM, BOM. 第2章 在HTML中使用js 1.把<script>标签放在<body>里面的最后,可以在加载js文件前显示页面内容,对用户友好. 2.<script>标签的defer属性表示脚本延迟到页面解析完再执行,async表示表下载脚本边加载HTML,相当于异步. 第3章 基本概念 1.js一切都区分大小写.标识符第一位不能是数字. 2.js五种基本类型:undefined,null,boole

js高程笔记14-15章

第14章 表单脚本 1.提交表单: <input>和<button>标签type设置成submit <input>标签type设置成image 以上方式提交表单会触发submit事件 使用js:form.submit()也可以提交,但不触发事件 可以利用事件验证表单内容和避免重复提交(不能用click触发) 2.重置表单:form.reset() 3.表单elements属性:是所有表单字段的集合 表单字段属性:disabled,form,type,name,value

js高程笔记10-12章

第10章 DOM 1.文档节点是每个文档的根节点.<html>为文档元素,为文档最外层元素.HTML元素——元素节点,特性——特性节点,文档类型——文档类型节点,注释——注释节点 2.Node类型:所有节点类型都继承自Node类型,共享基本的属性和方法. 基本属性:nodeType,nodeName,nodeValue 节点关系:childNodes,parentNode,previousSibling,nextSibling,firstChild,lastChild,hasChildNode

js高程笔记8-10章

第8章 BOM 1.window对象:既是BOM的核心对象,也是ES的Global对象. 2.如果页面包含框架(frame),每个框架都有自己的window对象,保存在frames集合中. 3.top对象始终指向最外层框架,即浏览器窗口,使用它可以在一个框架中访问另一个框架. parent对象始终指向当前框架的上层框架. self对象始终指向window. 4.window对象关于窗口位置的属性: (1)screenLeft和screenTop(火狐不支持)/screenX和screenY(IE

js高程笔记13章

第13章 事件 1.事件流:描述从页面中接收事件的顺序. 三个阶段:捕获,处于目标,冒泡. 2.事件处理程序:局部变量event表示事件对象,this值为事件目标元素. (1)HTML事件处理程序:可以访问特性.弊端:可能调用事件处理程序时,函数还未定义.同时代码紧密耦合,修改不便. (2)DOM0级事件处理程序:this引用当前元素.弊端:一个元素只能添加一个事件处理程序. (3)DOM2级事件处理程序:addEventListener()和removeEventListener().无法移除

js高程笔记6章

第6章 1.ES有两种属性:数据属性和访问器属性.属性中包含各种特性,表示属性的各种特征. 数据属性:[[Configurable]],[[Enumerable]],[[Writable]],[[Value]] 修改属性使用方法:Object.defineProperty() 访问器属性:[[Configurable]],[[Enumerable]],[[Get]],[[Set]] 访问器属性不包含数值.只能通过Object.defineProperty()定义.通过设置set和get函数,分别

查询url包含的字符串参数(js高程笔记)

假设  url="http://write.blog.csdn.net/postedit?id=5&search=ok" function getArgs() { var args = {}; //创建保存数据的对象 var qs = location.search.length > 0 ? location.search.substring(1) : ''; //取得查询字符串并去掉开头的问号 var items = qs.split('&'); //按&

javascirpt怎样模仿块级作用域(js高程笔记)

因为javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包括函数中而非语句中创建的. 如: function outputNumbers(count){ for(var i=0; i< count; i++){ alert(i); } alert(i); } 这个函数中定义了一个for循环,而变量 i 的初始值被设置为0.在Java.C++等语言中,变量i仅仅会在for循环的语句块中有定义,循环一旦结束,变量i就会被销毁.但是Javascript中,变量i是定义在out