《JavaScript高级程序设计》第5章 引用类型

5.2.2 转换方法

所有对象都有toString()和valueOf()方法
调用数组的toString()方法,会返回一个字符串,由数组中的每个项通过逗号连接而成
调用valueOf()还是返回数组

var colors = ["red", "blue", "green"];
console.log(colors.toString()); // red,blue,green
console.log(colors.valueOf()); // ["red", "blue", "green"]

join()方法接收一个参数,是用作分隔符的字符串,返回包含用这个分隔符连接而成的字符串,如果不传入参数,则默认使用逗号。

console.log(colors.join("||")); // red||blue||green

以上所有方法,如果数组中某个项是undefined或者null,则处理的时候以空字符串表示

5.2.3 栈方法

// push:向数组尾部添加元素。pop:移除数组尾部最后一项
var colors = [];
colors.push("red", "green"); // ["red", "green"]

5.2.4 队列方法

// shift:移出数组头部第一项。unshift:向数组头部添加元素
var colors = [];
colors.unshift("red", "green"); // ["red", "green"],无论是push还是unshift,添加多个元素时顺序始终保持一致

5.2.5 重排序方法

var values = [1, 30, 4, 22, 100, 21, 22];
// 如果 compareFunction(a, b)小于0 ,那么a会被排列到b之前;
function compare (value1, value2) {
  return value1 - value2;   // 数组升序排列
}
values.sort(compare);

5.2.6~5.2.8 操作方法、位置方法、迭代方法

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

位置方法 indexOf() lastIndexOf()

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

5.5.2 函数声明与函数表达式

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

console.log(sum(10, 10));  // 20,正常运行
function sum (num1, num2) {
  return num1 + num2;
}

console.log(anotherSum(10, 10));   // 报错,Uncaught TypeError: anotherSum is not a function
var anotherSum = function (num1, num2) {
  return num1 + num2;
}

5.5.4 函数内部属性 callee和caller

// callee:arguments对象的属性,指向拥有这个arguments对象的函数
function factorial (num) {
  if (num <= 1) {
    return 1;
  } else {
    return num * arguments.callee(num - 1);
    // 相当于 return num * factorial(num - 1);
  }
}

// caller:函数对象的属性,指向调用当前函数的函数的引用
function outer () {
  inner();
}
function inner () {
  console.log(inner.caller);    // outer函数的源代码,因为outer调用了inner
}
outer();

5.5.5 函数属性和方法

call、apply:函数对象的方法,用于改变函数体内this的值,同时调用它

call传入的是多个参数。

apply传入的是一个参数数组。

function sum (num1, num2) {
  return num1 + num2;
}
var num1 = 10;
var num2 = 20;
var nums = [10, 20];
console.log(num.call(this, num1, num2));  // 传入多个参数
console.log(num.apply(this, nums));   // 传入一个数组

bind:函数对象的方法,返回一个函数(用于赋值而非调用,区别于call和apply),这个函数改变了函数体内this的值

window.color = "red";
var o = {color: "blue"};
function sayColor () {
  console.log(this.color);
}
sayColor.call(this);   // red
sayColor.call(o);   // blue
var objectSayColor = sayColor.bind(o);
objectSayColor();  // blue

5.6 基本包装类型

在声明基本数据类型的时候,实际上是创建了一个基本包装类型的对象的实例,使其有相应的方法可以被调用

5.6.3 String类型

trim方法:删除前置和后缀的所有空格
match方法:返回一个数组,第一项是与整个模式匹配的字符串,之后的每项保存与正则表达式匹配的字符串
replace方法:替换,如果要替换所有字符串,需要提供正则表达式,指定全局标志

5.7 单体内置对象

5.7.1 Global对象

所有全局作用域中定义的属性和函数,都是Global对象的属性,例如isNaN() parseInt()
大多数ECMAScript实现中都不能直接访问Global对象,不过Web浏览器实现了承担该角色的window对象
uri方法:encodeURI() encodeURIComponent() decodeURI() decodeURIComponent()

5.7.2 Math对象

var max = Math.max(3, 54, 32, 16); // 找最大值
var values = [1, 2, 3, 4, 5, 6];
var max = Math.max.apply(Math, values); // 找数组中的最大值,将Math对象作为apply的第一个参数从而正确设置this值

// Math.ceil() 向上取整
// Math.floor() 向下取整
// Math.round() 四舍五入
var num = Math.floor(Math.random() * 10 + 1); // 随机得到一个1到10之间的数

function selectFrom(lowerValue, upperValue) {
  var count = upperValue - lowerValue + 1;
  return Math.floor(Math.random() * count) + lowerValue;
}
var num = selectFrom(2, 10); // 随机得到一个2到10之间的数
时间: 2025-01-18 11:21:06

《JavaScript高级程序设计》第5章 引用类型的相关文章

第5章 引用类型

本章包含Object类型.Date类型.RegExp类型.Function类型.基本包装类型.单体内置对象. 引用类型的值(对象)是引用类型的一个实例,引用类型是一种数据结构.var person = new Object():new操作符实例化了一个对象,实例化的对象定义了默认的属性和方法. 5.1 Object类型 创建objecr实例有两种.第一种用new+object构造函数: var person = new Object; person.name = "Nicholas";

第五章 引用类型

Object类型 大多数引用类型的值都是Object类型的实例. 创建Object的实例: 1.使用Object构造函数 var person = new Object(); person.name = "Nicholas"; person.age = 29; 2.字面量表示法(花括号) var person = { name : "Nicholas", age : 29 }; var person = {}; //与new Object()相同 通过字面量定义对象

第五章 引用类型--笔记1

引用类型是一种数据结构,用于将数据和功能组织在一起. 对象是某个特定引用类型的实例,新对象的创建可以用new关键字+构造函数,也可以用对象字面量进行创建. 注意:用对象字面量方法创建对象时,最后一个属性值的后面不能添加逗号,否则会在ie7及更早版本和opera中导致错误. 如果以数值来作为属性名的话,这个属性名会自动转换为字符串. var someObj = {};  等价于   var someObj = new Object(); 函数传递的参数中有多个可选参数的话,最好的做法是对那些必须值

JavaScript高级程序设计学习笔记第五章--引用类型(函数部分)

四.Function类型: 1.函数定义的方法: 函数声明:function sum (num1, num2) {return num1 + num2;} 函数表达式:var sum = function(num1, num2){return num1 + num2;};//注意有个分号 构造函数的方式:var sum = new Function("num1", "num2", "return num1 + num2");// 2.函数的重复声

第五章——引用类型

JS的引用类型重点讲Object,array和function等几种 1.Object对象 创建对象有两种方式:1.new出一个Object的实例:2.使用对象字面量来创建对象,在对象字面量中,使用逗号分隔不同的属性,但最后一个属性的后面不能再添加逗号,在IE7以前的版本会报错.        使用对象字面量,属性名可以使用字符串: 这里的数字5,会自动转化为字符串"5",注意 实际使用中,更偏向对象字面量的方法,这种方法简单,要求代码少. 输出 访问对象属性可以使用点表示法,还可以使

JavaScript高级程序设计(第三版) (5章 引用类型)

引用类型 在ECMAScript 中,引用类型是一种数据结构,用于将数据和功能组织在一起.这种数据类型不具备传统的面向对象语言所支持的类和接口等基本结构.引用类型有时候也被称为对象定义,因为他们描述的是一类对象所具有的属性和方法. 5.1    Object类型 5.2    Array类型 特点: 每一项可以保存任何类型的数据: 大小可以动态调整 length大小可变(最大值4294967295) 两种创建方式: 一:通过构造函数创建 //不指定大小 var colors1 = new Arr

javascript高级程序设计笔记(第5章 引用类型)

1.Object类型 两种方式定义:对象字面量.new 两种方式访问:括号.点 2.Array类型 2.1  定义方式:new Array.数组字面量 2.2  lenght属性:可以利用它方便的想数组末尾添加元素 2.3  检测数组 instanceof isArray()方法  2.4  toString().soLocaleString().valueOf().join()方法 2.5.栈方法   push()方法:逐个添加到数组末尾,并返回修改后的数组长度 pop()方法:返回数组的最后

第五章 引用类型 基本包装类型

为了便于操作基本类型值,ECMAScript 提供了3 个特殊的引用类型:Boolean.Number 和String.实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据.来看下面的例子. var s1 = "some text"; var s2 = s1.substring(2); 当第二行代码访问s1 时,访问过程处于一种读取模式,也就是要从内存中读取这个字符串的值.而在读取模式中访问字符串时,后台都会自动完成下

高程第五章(引用类型)

引用类型是一种数据结构,它被称为类,但是这种称呼并不妥当,不具备传统的面向对象语言所支持的类和接口等基本结构. Array.isArray()最终确定某个值到底是不是数组. var color = ['red','blue','green']; console.log(color.toString());//red,blue,green console.log(color.valueOf());//[ 'red', 'blue', 'green' ] console.log(color.toLo

第五章 引用类型&gt; Object类型

概念:引用类型的值(对象)是引用类型的一个实例.有时也被称为对象定义,描述的是一类对象所具有的属性和方法. var person = new Object(); 创建一个Object的新实例,保存在变量Person中.使用的构造函数是Object,它为新对象定义默认的属性和方法. 5.1 Object类型 创建Object实例的俩种方法 1.使用new操作符,后面跟一个Object构造函数. var Person = new Object(); person.name = "Nicholas&q