廖雪峰JS小记

(function(){})()

原型,原型链

浅谈Js原型的理解
JS 原型与原型链终极详解

对象

对象:一种无序的集合数据类型,它由若干键值对组成

访问对象属性

通过.操作符完成的 属性名必须是一个有效的变量名 属性名包含特殊字符,就必须用''括起来

var xiaohong = {
    name: '小红',
    'middle-school': 'No.1 Middle School'
};
middle-school不是一个有效的变量,就需要用''括起来
用['xxx']来访问

xiaohong['middle-school']; // 'No.1 Middle School'
xiaohong['name']; // '小红'
xiaohong.name; // '小红'

对象增删属性

var xiaoming = {
    name: '小明'
};
xiaoming.age; // undefined
xiaoming.age = 18; // 新增一个age属性
xiaoming.age; // 18
delete xiaoming.age; // 删除age属性

判断对象是否有某一属性

第一种:用in操作符
继承得到的
var xiaoming = {
    name: '小明'
};
'name' in xiaoming; // true
'grade' in xiaoming; // false
'toString' in xiaoming; // true
第二种:用hasOwnProperty()方法
判断一个属性是否是xiaoming自身拥有的,而不是继承得到的
xiaoming.hasOwnProperty('name'); // true
xiaoming.hasOwnProperty('toString'); // false

特殊情况:
toString定义在object对象中,
而所有对象最终都会在原型链上指向object,所以xiaoming也拥有toString属性

数组

数组获取长度

var arr = [1, 2, 3.14, 'Hello', null, true];
arr.length; // 6

Array的length赋一个新的值会导致Array大小
arr.length = 2;
arr; // arr变为[1, 2]

通过索引赋值时,索引超过了范围,同样会引起Array大小的变化
var arr = [1, 2, 3];
arr[5] = 'x';
arr; // arr变为[1, 2, 3, undefined, undefined, 'x']

数组常用属性

indexOf
slice
splice
push pop
unshilft shilft
sort
reverse
concat
join

循环

for
for in

1.把一个对象的所有属性依次循环出来
2.过滤掉对象继承的属性,用hasOwnProperty()来实现
3.Array也是对象,而它的每个元素的索引被视为对象的属性

while

只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环

do while

每次循环完成的时候判断条件

1.
var x = 0;
var i;
for (i=1; i<=10000; i++) {
    x = x + i;
}
x; // 50005000

2.
var o = {
    name: 'Jack',
    age: 20,
    city: 'Beijing'
};
for (var key in o) {
    console.log(key); // 'name', 'age', 'city'
}

3.
var x = 0;
var n = 99;
while (n > 0) {
    x = x + n;
    n = n - 2;
}
x; // 2500
4.
var n = 0;
do {
    n = n + 1;
} while (n < 100);
n; // 100

函数定义

function abs(x) {
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
}

var abs = function (x) {
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
};

function (x) { ... }是一个匿名函数,它没有函数名。
但是,这个匿名函数赋值给了变量abs,所以,通过变量abs就可以调用该函数。
以上两者等价。注意第二种方式按照完整语法需要在函数体末尾加一个;,表示赋值语句结束。

函数-arguments

函数内部起作用,并且永远指向当前函数的调用者传入的所有参数
浅析js中的arguments

你可能感兴趣的:(廖雪峰JS小记)