<<JavaScript编程全解>>阅读笔记之变量与对象

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] }

posted @ 2015-10-26 17:58  龙式坦克  阅读(180)  评论(0)    收藏  举报