编程

JavaScript高级教程笔记

2016-05-19  本文已影响568人  Dev_hell03W

1. JavaScript对象

JavaScript中所有的事物都是对象: 字符串, 数值, 数组, 函数. JavaScript允许自定义对象. JavaScript提供多种内建对象, 如: String, Date, Array等. 对象只是带有属性和方法的数据类型.
布尔类型, 数字类型, 字符串类型, 日期类型, 数学和正则表达式类型, 数组类型, 函数类型都可以是对象.
对象是特殊的数据类型, 对象拥有属性和方法.

//访问对象的属性的语法:
objectName.propertyName\
//如:
var message="Hello World!";
var x=message.length;

//访问对象的方法:
objectName.methodName()
如:
var message="Hello world!";
var x=message.toUpperCase();

创建JavaScript对象的集中方法:

// 1. 直接创建对象
person = new Object();
person.firstname = "wei";
person.lastname = "walden";
person.age = 50;
person.eyecolor = "blue";
替代语法(使用对象常量(literals)创建):
person = {firstname: "wei", lastname: "walden", age: 50, eyecolor: "blue"};

//2. 使用对象构造器创建对象
//对象构造器
function person(firstname, lastname, age, eyecolor){
    this.firstname = firstname;
    this.lastname = lastname;
    this.age = age;
    this.eyecolor = eyecolor;
}
//使用构造器创建对象
var myFriend = person("xiao", "ming", 15, "red");
var xiaoyu = person("xiao", "yu", 23, "blue");

//3. 把属性添加到JavaScript对象上
可以通过为对象赋值, 向已有的对象添加新属性.

//4. 把方法添加到JavaScript对象上
方法不过是附加在对象上的函数, 可以再构造函数内部定义对象的方法.
代码如下所示: 
    function Person(firstname, lastname, age){
        this.firstname = firstname;
        this.lastname = lastname;
        this.age = age;
        this.changeFirstName = changeFirstName;
        
        function changeFirstName(name){
            this.firstname = name;
        }
    }

    var per = new Person("wei", "walden", 23);
    alert(per.firstname);
    per.changeFirstName("wang");
    alert(per.firstname);

JavaScript类:

JavaScript中 for in 循环:

for (variable in object)
{
  code to be executed
}

2. JavaScript Number对象

JavaScript只有一种数字类型, 可以使用, 也可以不使用小数点来书写数字.

例如:

var pi = 3.14;
var x = 34;

//科学计数法
var y = 1.23e5; //123000
var z = 1.23e-5; //0.0000123

所有JavaScript数字均为64位:
JavaScript不是类型语言, 所以JavaScript不定义不同类型的数字; 在JavaScript中, 数字不分为整数类型和浮点类型, 所有数字都是浮点类型的.

八进制和十六进制:
如果前缀是0, 则数值会被解释为八进制; 如果前缀是0x, 则解释为十六进制; 默认情况下, js数字为十进制.
使用toString()方法, 可以输出各种进制的数, 如:

    var num = 900;
    alert(num.toString(20)); //250
    alert(num.toString(16)); //384
    alert(num.toString(10)); //900
    alert(num.toString(8)); //1604
    alert(num.toString(2)); //1110000100

无穷大:
当数字运算结果大于JS能表示的上限(溢出), 结果是一个无穷大的值, 在JavaScript中用Infinity表示. 当负数小于能表示的最小数时候为负无穷小, 用-Infinity表示. 无穷大值得行为特性和我们期望是一致的: 基于他们的加减乘除运算结果还是无穷大(正负号相同).

//JavaScript代码:
    var num = 2;
    var n = 0;
    while(num != Infinity) {
        num = num * num;
        document.write(num+"<br />");
        n++;
    }
    document.write(" n = " + n);

//运行结果
4
16
256
65536
4294967296
18446744073709552000
3.402823669209385e+38
1.157920892373162e+77
1.3407807929942597e+154
Infinity
n = 10

NaN - 非数字值:
NaN 属性表示非数字值的特殊值. 该属性用来指示某个值不是数字, 可以把Number对象设置为该值, 来指示其不是数字值. 可以用isNaN()全局函数来判断一个值是否是NaN值.


    var x = 1000 / "Apple";
    isNaN(x); // returns true, 除法结果是非数字, 是NaN, 所以返回true
    var y = 100 / "1000";
    isNaN(y); // returns false. 除法成立, 结果是数字, 所以返回false.

一个数除以0, 是无穷大, 无穷大是一个数字.

var bigNum = 1 / 0; //big == Infinity

数字可以是数字, 也可以是对象:
例如:

var x = 123;
var y = new Number(123);
typeof(x) // returns Number
typeof(y) // returns Object

数字的属性:

3. JavaScript String

String用于处理已有的字符快. js中字符串可以用双引号或者单引号来定义都可以.
通过位置索引, 可以访问字符串中任何的字符.

var name = "Wei Dongfang";
var cr4 = name[4]; //cr4 == 'D'

一些方法的用法:

    // 查找字符串
    var str="Hello world, welcome to the universe.";
    var n=str.indexOf("welcome1");
    alert(n);

    // 匹配字符串, 如果字符串包含参数给出的字符串, 则返回这个字符串, 没有返回 `null`
    var str="Hello world!";
    document.write(str.match("world") + "<br>");
    document.write(str.match("World") + "<br>");
    document.write(str.match("world!"));
    
    //替换字符串
    str="Please visit Microsoft!"
    var n=str.replace("Microsoft","w3cschool");

    //字符串分割, 分割之后是数组类型的.
    var str = "asd,asd,ad, yre,jh";
    var arr = str.split(",");
    alert(arr[0]);

字符串的属性和方法:

属性:

方法:

4. JavaScript Date(日期)

属性:

常用的方法

方法 描述
getFullYear() 从Date对象以四位数字返回年份. 有对应set方法,设置年份
getMonth() 从Date对象返回月份(0 ~ 11). 有对应set方法
getDate() 从Date对象返回一个月中的某一天(1 ~ 31). 有对应set方法
getHours() 返回Date对象中的小时(0 ~ 23). 有对应set方法
getMinutes() 返回Date对象的分钟(0 ~59). 有对应set方法
getSeconds() 返回Date对象的秒数(0 ~ 59). 有对应set方法
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。 有对应set方法
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6).
getTime() 返回1970年1月1日至今的毫秒数. 有对应set方法
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
toDateString() 把 Date 对象的日期部分转换为字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toString() 把 Date 对象转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleString() 据本地时间格式,把 Date 对象转换为字符串。

详解: http://www.w3school.com.cn/jsref/jsref_obj_date.asp

5. JavaScript Math 对象

Math对象属性

Math对象方法:

方法 描述
Math.abs(x) 返回x的绝对值
Math.ceil(x) 对数字进行上舍入
Math.floor(x) 对数进行下舍入
Math.round(x) 把数字四舍五入
Math.max(x,y,z,...,n) 返回 x,y,z,...,n 中的最高值。
Math.min(x,y,z,...,n) 返回 x,y,z,...,n中的最低值。
Math.pow(x,y) 返回 x 的 y 次幂。
Math.random() 返回 0 ~ 1 之间的随机数。
Math.sqrt(x) 返回数的平方根。

6. JavaScript Array 对象

// concat()连接两个或者多个数组
  var arr1 = ["Cecilie", "Lone"];
  var arr2 = ["dfgs", "fgerev"];
  obj = arr1.concat(arr2, arr1, arr2);

// array.join(separator)
obj = obj.join("&");//数组元素以 `&` 分割 .  
obj = obj.join(); //数组元素以 `,` 分割 .  

// 检测数组 ages 的所有元素是否都大于 18 :
var ages = [32, 33, 16, 40];

function checkAdult(age) {
    return age >= 18;
}

function myFunction() {
    document.getElementById("demo").innerHTML = ages.every(checkAdult);
}

// 检测数组中是否有元素大于 18: 用法类似every()
var ages = [3, 10, 18, 20];
function checkAdult(age) {
    return age >= 18;
}
function myFunction() {
    document.getElementById("demo").innerHTML = ages.some(checkAdult);
}
输出结果为:
true

//sort() 排序
// 字母升序
var arrWord = ["jfds", "asdf", "aaswf", "poyt"];
obj = arrWord.sort();
// 字母降序
obj = arrWord.sort();
obj = obj.reverse();

//数字升序
var arrNum = [100, 20, 50, 30, 8];
obj = arrNum.sort(function(a,b){ return a-b; });
//数字降序
var arrNum = [100, 20, 50, 30, 8];
obj = arrNum.sort(function(a,b){ return b-a; });

详解 : http://www.runoob.com/jsref/jsref-obj-array.html

上一篇下一篇

猜你喜欢

热点阅读