将对象的所有属性名放到一个数组中 || 获得对象的所有属性名 || return;不具有原子性 || 怎样自己制作异常|| 判断对象有没有某个属性 || 当传递的参数比需要的参数少的时候,没有的值会被赋予undefined || 获得函数实际传递的参数 || 怎么用函数处理一个对象 || 用一个名字空间定义一个模块所有的函数 || 给一个对象添加方法

获得对象的所有属性名 || 将对象o的所有属性名放到数组中

var o = {x:1,y:2,z:3};
var arr = [];
var i = 0;
for(arr[i++] in o){};//是空的循环体
console.log(arr); ["x", "y", "z"]

在js中遇到return;可以看到运行到return;函数到这就停止了,循环也停止了,只是return;后面的不执行了,在这之前打印的还在,也就是说函数和循环中的return;没有原子性的,不会回滚像没打印一样。

function a(x){
for(var i = ;i<x;i++){
console.log(i+':'+i);
if(i == ){return;}
console.log('after return');
}
}; a();
:
after return
:
after return
:
after return
:
after return
:
after return
:

怎样自定义异常 || 怎样抛出自己的异常 || 怎样自己制作异常

function fa(x){
if(x<){throw new Error(x+'小于0');}//抛出异常时,后面的代码就不再执行了
console.log(x);
} fa(-); Uncaught Error: -1小于0(…)

关于try catch只要执行了try里代码的一部分,无论try代码块执行了多少,finally从句都会被执行

判断对象有没有某个属性

if(o.x !== undefined){

这是o有x属性的情况

}else{

这是o没有x属性的情况

}

函数的传递的参数多于需要的参数时,多余的会被忽略;当传递的参数比需要的参数少的时候,没有的参数会被赋予undefined值。

arguments是函数实际传递的数组

function f(x,y,z){

if(arguments.length != ){
  throw new Error('f的参数不等于3');
}
for(var i = ;i<arguments.length;i++){
  console.log(arguments[i]);
} } f('a','b');
Uncaught Error: f的参数不等于3(…)

function f(x,y,z){

if(arguments.length != 3){
  throw new Error('f的参数不等于3');
}
for(var i = 0;i<arguments.length;i++){
  console.log(arguments[i]);
}
} f('a','b','c'); a b c

用函数处理一个对象

var o = {"x":"","y":""};
function f(){
for(var i in this){
console.log(i);//i为属性名
if(i == "x"){this[i]+=}//this[i]可以获得属性值
console.log(this[i]); } } f.call(o); x y

用一个名字空间定义一个模块所有的函数,就是方法

var Class = {};
Class.methodA = function(pa){console.log(pa);};
Class.methodB = function(pb,pc){console.log(pb+pc);};
Class.methodA('');
Class.methodB(,);
//给一个对象添加方法
var Class = {"x":"","y":""};
Class.methodA = function(pa){console.log(pa);};
Class.methodB = function(pb,pc){console.log(pb+pc);};
Class.methodA('');
Class.methodB(,);
上一篇:URL的格式


下一篇:如何测试一个WEB的输入框?