高程第五章

5.1Object类型:

创建Object实例有两种方法:第一种使用new 操作符后跟Object构造函数:

var person = new Object();
person.name = "Toni";
person.age = 2;

第二种:对象字面量

var person1 ={
    name : "Pasha",
    age: 25
};

**对象字面量可以传递参数

function displayInfo(args) {
    var output = " ";

    if(typeof args.name == "string"){
        output += "Name:" + args.name + "\n";
    }

    if(typeof args.age == "number"){
        output += "Age" + args.age + "\n";
    }
    console.log(output);
}

displayInfo({
    name : "Toni",// 传递参数
    age : 2
});

displayInfo({
    name : "Pasha"
});

**访问对象属性时使用的都是点表示法

***使用方括号语法时,应该将访问的属性以字符串的形式放在方括号中alert(person["name"])等价于alert(person.name)。*属性名中有特殊字符时可用方括号,属性名有空格时用方括号表示法。如person["first name"] = "Toni".  建议使用点表示法。

5.2.1**检测数组: Array.isArray()。if(Array.isArray(value)){   //对数组执行某些操作}

5.2.2 **数组转换成字符串 colors为数组,colors.toString();或是colors.join(".").

5.2.3 **栈方法:规则LIFO。push()添加到数组末尾(返回修改后的数组长度)colors为数组,colors.push("red", "green")。**pop()方法从数组末尾移除最后一项,返回移除的项

5.2.4**队列方法:规则FIFO。shift()移除数组中的第一项并返回该项。unshift()在数组前端添加任意个项并返回新数组长度。

5.2.5**.sort()默认按字母排序

**如果第一个参数应该位于第二个参数之前返回一个负数(前,后返回-1),如果第一个参数应该位于第二个参数之后返回一个正数(后,前返回1)以下是升序。values.sort(compare)

function compare(value1, value2) {
    if(value1 < value2){
        return -1;
    } else if(value1 > value2){
        return 1;
    } else {
        return 0;
    }
}

或是更简单的

function compare1(value1, value2) {
    return value1 - value2;
}


5.2.6数组操作方法 

**slice(),创建一个数组的副本。当只有一个参数时,从该位置以后的所有项(slice(1)下标为1的开始以后所有的项)

当有两个参数时(slice(1, 4)从下标为1的项开始到下标为4时结束,但是不包括下标为4的项)


5.2.7**indexOf("要查找的项,(可选,查找起点的下标索引)")从开头向后查找。numbers是一个数组,numbers.indexof(要查的项)。**lastIndexOf()从结尾向前查找,用法一样


5.2.8迭代方法 

var numbers = [1,2,3,4,5,4,3,2,1];

var everyResult = numbers.every(function (item, index, array) {
    return (item > 2);
});
console.log(everyResult);

var someResult = numbers.some(function (itme, index, array) {
     return (itme > 2);
});

console.log(someResult);

var filterResult = numbers.filter(function (item, index, array) {
     return (item > 2);
});

console.log(filterResult);

var mapResult = numbers.map(function (item, index, array) {
     return item * 2;
});

console.log(mapResult);


5.2.9归并方法 **reduce()与reduceRight();

var values = [1,2,3,4,5,4,3,2,1];
var sum = values.reduce(function (prev, cur, index, array) {
    return prev + cur;
});

console.log(sum);

var sum1 = values.reduceRight(function (prev, cur, index, array) {
    return prev + cur;
});

console.log(sum1);

5.3**取得执行的时间

var start = new Date();
alert("Hello world!");
var stop = Date.now(),
    result = stop - start;
console.log(result);
5.3.1继承的方法:1月份比2月份要早

var date1 = new Date(2007, 0, 1);
var date2 = new Date(2007, 1, 1);
console.log(date1 < date2);//true
console.log(date1 > date1);//false
5.4RegRxp类型

**捕获组有两种表示形式:一、var pattern = /.at/g,二、var pattern = new RegExp("\.at", "g")

**捕获组有两个方法exec()返回一个数组包含两个属性index(匹配项在字符串中的位置)和input,test()在模式与该参数匹配的情况下返回true.

var text = "cat, bat, sat, fat";
var pattern1 = /.at/;

var matches = pattern1.exec(text);
console.log(matches.index);
console.log(matches[0]);
console.log(pattern1.lastIndex);

var pattern2 = /.at/g;
var matches = pattern2.exec(text);
console.log(matches.index);
console.log(matches[0]);
console.log(pattern2.lastIndex);

matches = pattern2.exec(text);
console.log(matches.index);
console.log(matches.input);
console.log(matches[0]);
console.log(pattern2.lastIndex);


var text = "000-00-0000";
var pattern = /\d{3}-\d{2}-\d{4}/;
if (pattern.test(text)){
    console.log("The pattern was matched");
}
**RegExp构造函数属性

var pattern = /(..)or(.)/g; 带()的是捕获组,有两个捕获组  p108

5.5 函数是对象,函数名是指针。使用不带圆括号的函数名是访问函数指针,而非调用函数。此时anotherSum和sum就都指向了同一个函数.

function sum(num1, num2) {
    return num1 + num2
}

console.log(sum(10, 10));

var anotherSum = sum;
console.log(anotherSum(10, 10));

sum = null;
console.log(anotherSum(10, 10));


5.5.1函数没有重载: 同名函数后面的会把前的给覆盖住

5.5.2 函数声明可以提升,有等号的是表达式不可以提升



5.5.5函数属性和方法:

**两个属性:length和prototype。调用方法是,<函数名字.length>

**两个方法:apply(),call().

**bind().会创建一个函数的实例,其this值会被绑定到传给bind()的函数值

window.color = "red";
var o = {color: "blue"};

function sayColor() {
    console.log(this.color);
}
sayColor(this); // red
sayColor(window); // red
sayColor.apply(o);  //blue


var objectSayColor = sayColor.bind(o);
objectSayColor();


5.6.3基本包类型之String类型

**String对象的方法继承 了valueof(),toString(),String类型的第一个实例都有一个lenght属性(空格,逗号都算一个字符)

1、字符方法charAt()(返回给定位置的那个字符),charCodeAt()(返回给定位置的字符编码)。接收基于0的字符位置。

2、字符串操作方法:slice(),substr(),substring(),三个方法返回操作字符串的一个子字符串。

3、字符串的益方法:indexOf()从开头同后搜索返回子字符串的位置,和lastIndexOf()从结尾向前搜索子字符串返回子字符串的位置。(如果没有找到该子字符串则返回-1)

4、trim(),创建一人字符串副本,删除前置及后缀的所有空格,然后返回结果。

5、toLowerCase()转换成小写,toUpperCase()转换成大写。

6、字符串的模式匹配方法:@1.match()与正则表达式的exec()相同。@2search()。@3replace()接受两个参数一个参数可是是一个正则或是一个字符串,第二个参数可以是一个字符串或一个函数。@4split,这个方法 可以基于批定的分隔符将一个字符串分割成多个字符串,并将结果放在一个数组中。

5.7.1Global对象:所有的全局作用域中定义的属性和函数都是Global对象

1、encodeURI()结果除了空格之外的其他字符原封不动,用decodeURI()解码。ecnodeURIComponent()结果会使用对应的编码替换所有非字母数字字符,用decodeURIComponent()来解码。

2、eval()方法:

4、window对象:在全局作用域中声明的所有变量和函数,就是成了window对象的属性。

5.7.2Math对象

2、Math.max最大,Math.min最小。

3、舍入方法:Math.ceil()执行向上舍入,Math.floor()执行向下舍入,Math.round()执行标准舍入。

4、random()方法:返回大于等于0小于1的一个随机数

随机返回两个数之间的数

function selectForm(lowerValue, upperValue) {
    var choices = upperValue - lowerValue + 1;
    return Math.floor(Math.round() * choices + lowerValue);
}


















































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值