1.对变量重复声明,不会覆盖原有的只
如:var a=1;
var a;
alert(a)//1
2.Js函数返回多个值
function(x,y)
{
reture [y,x];
}
3.检查是否该变量为全局变量
var x=2;
alert( 'x' in this);
4.访问未声明的变量,会触发ReferenceError 错误
5.检查属性是否存在
访问不存在的属性不会触发ReferenceError 错误
如 this.x //undefined
但如果在不存在属性时,再访问属性,就会产生typeErroe
obj.x && obj.x.y 避免typeErroe
6.返回多个值的函数
function fn(x, y,z)
{
return {a:x,b:y,c:z} ;
}
var obj = fn(1, 2, 3);
alert(obj.b);//2
7.function MyClass(x,y)
{
this.x=x;
this.y=y;
}
var obj=new MyClass();
构造函数MyClass最后会隐式返回this,
javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。 //补充资料
new的作用就是"构造函数",这种方法与直接声明的函数的区别就是:用new操作符构造出来的函数是一个对象。//补充资料
8.点运算符与中括号运算符的使用
中括号运算符可以使用"-"读取属性
如 obj[f-b]
而obj.f-b 不行
中括号运算符可以使用变量读取属性
如var x=‘1’;
obj[x];
9.var map={};
alert( map.hasOwnProperty ('tostring'));//判断map中是否有直接属性tostring
10. delete 只能删除对象中直接属性
如 delete map['tostring'] //tostring是map继承的属性
11.js限制对象增删改
preventExtensions:不能新增
seal:不能新增,删除
freeze:不能新增,删除,修改属性值
var obj = { x: 2, y: 3 };
Object.preventExtensions(obj);
obj.z = 33;
alert(obj.z);//undefined
Object.seal(obj);
delete obj.x;
alert(obj.x); //2
Object.freeze(obj);
obj.x=3
alert(obj.x); //2
12.关于this引用
A.构造函数调用,this指所生成的对象
B.方法调用,this指向接收方对象,方法调用的目标对象叫接收方对象
C.apply或call调用时,this为 apply或call指定的对象
13.关于apply与call
指定this调用的对象
不同点在于两者传递的参数
function f(a, b)
{
alert('a:' + a + " ,b:" + b + ",this.x:" + this.x);
}
f.apply({ x: 5 }, [1, 2]);
f.call({x:6},1,2);
14.得到对象的构造函数
var d = new Date();
alert(d.constructor); //function Date(){ [native code] }