js进阶

js在实例化对象后,可以对这个对象增加属性和属性值,并且还可以通过delete一元操作符来删除对象的属性。

var o = new Object();
o.name = "langsin";
alert(o.name);
delete o.name;
alert(o.name);

每个方法即对象都有内置的arguments对象和length属性
arguments对象为数组类型,由调用方法时实际传递的参数组成,可以通过arguments.length来获得实际传递的参数的个数,也可以通过arguments[0]、arguments[1]等获得实际传递的各个参数的值
length属性为方法所期望的参数的个数,即定义方法时所写的参数的个数
示例:

function add(number){
alert("实际传递的参数个数为: " + arguments.length);
}
alert("方法add期望的参数个数为: " + add.length);//运行结果:“方法add期望的参数个数为: 1”
add(1,2,3);//运行结果:“实际传递的参数个数为:3”

js的参数可传可不传,可多传可少传,都不报错的
如:

function t()
{
alert(arguments.length);
}
t(1,2,7);

o = o || {} 表示:如果o为null或undefined,则将o初始化空对象(即{}),否则o不变。目的是防止o为null或未定义的错误。

以下情况皆为声明js的全局变量
1:在function函数外使用var关键字显示声明变量
2:不使用var关键字声明就直接赋值的变量,无论是否在function函数内,都是属于隐式声明的全局变量
3:使用window关键字声明的变量,如:window.test = 5;

js使用常量

function validate(value){
    if(!value){
        alert('不存在');
        location.href = '/errors/invalid.php';
    }
}

现在,我想把‘不存在’改为‘该数据不存在!’,把跳转路径也改了,我得回到函数中找到对应的代码去修改,而每次修改逻辑代码,都有可能引入错误的风险。所以我们可以把数据单独定义为常量,与应用逻辑分离:

var Constans = {
    ERRORMSG: '不存在',
    ERRORPAGE:'/errors/invalid.php'
};
function validate(value){
    if(!value){
        alert(Constans.ERRORMSG );
        location.href = Constans.ERRORPAGE ;
    }
}
原文地址:https://www.cnblogs.com/xushining/p/5543222.html