javascript


  • 使用Object.hasOwnProperty()检测属性名是否为对象的成员,还是原型链的成员
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var obj = {
    a: 1, b: 2, c: 3
    };
    obj.__proto__.d = 4;

    for (i in obj) {
    console.log(i);//a,b,c,d
    console.log(obj.hasOwnProperty(i));//true,true,true,false
    }

  • try语句执行一个代码块,并捕获该代码块抛出的任何异常,catch从语句定义了一个新的变量,它将接受异常对象.
    1. try 语句测试代码块的错误。
    2. catch 语句处理错误。
    3. throw 语句创建自定义错误。
1
2
3
4
5
6
7
8
9
10
11
function message() {
try {
adddlert("Welcome guest!");
}
catch (e) {
txt = "本页有一个错误。\n\n";
txt += "错误描述:" + e.message + "\n\n";
txt += "点击确定继续。\n\n";
alert(txt);
}
}

typeof运算符产生的值有numberstringbooleanundefinedfunctionobject。如果运算数是一个数组或者null,其反正值为Object

+运算符可以进行加法运算或字符串连接.如果你想要的是加法运算,请确保两个运算数都是数字.

/运算符可能会产生一个非整数结果,即使两个运算数都是整数.


  • JavaScript基本数据类型包括:数值、字符串、布尔值、nullundefined,其它的所有值为对象。字符串、布尔值和数值‘貌似’是对象,因为他们都有方法,但他们是不可变得。JavaScript中的对象是可变的键控对象,数组、函数、正则表达式都是对象,当然对象object更是对象。
  • ||运算符可以用来填充默认值:
    1
    2
    var middle = stooge["middle-name"] || "(none)";
    var status = flight.status || "unknown";
  1. typeof会检测原型链
  2. hasOwnProperty()不检测原型链

apply调用模式

1
2
3
4
5
6
7
8
9
10
11
12
var Que = function (string) {
this.status = string;
};
Que.prototype.get_status = function () {
return this.status;
};
var statusObject = {
status:'A-OK'
};
//statusObject上没有get_status方法,但可以继承Que的get_status
var x = Que.prototype.get_status.apply(statusObject);
console.log(x);//A-OK

applyget_status()this指向statusObject


参数arguments

1
2
3
4
5
6
7
8
var sum = function () {
var sum = 0, i;
for (i=0;i<arguments.length;i+=1) {
sum += arguments[i];
}
return sum;
};
console.log(sum(1,2,3,4));//10