函数对象和闭包的预习

创建对象;

1、对象直接量。

    var point = { x:0,y:0 };  //point就是一个对象,跟C#不同,它不需要一定有类才能创建对象。

  2、通过new创建对象

    var d = new Date();    //创建一个Date对象

  3、原型

    Object.prototype  //用于获取对象原型的引用。所有对象都直接或间接继承自Object.prototype,相当于C#中的System.Object();

    通过new Date()创建的对象同时继承自Date.prototype和Object.prototype。

  4、Object.create()

    Object.create()是一个静态函数,可以用它创建一个新对象。

  delete()   delete()方法只能够删除自有属性,不能够删除继承属性。delete()只是断开属性和宿主对象的联系,而不回去操作属性中的属性。

 var a= {
            author:"姜曲海",
            number:123
        }
        delete a.author;        //此行代码也可写成delete a["author"]
        document.write(a.author);  //a.author的值为undefined,因为已经被删除了


in:检测某对象是否含有某个属性
var o = {
            x:1
        }  
        document.write("x" in o);  //返回true  x是o的一个属性
        document.write("y" in o);  //返回false  y不是o的属性

hasOwnProperty() 检测对象中是否含有某属性
 var o = {
            x : 1
        }
        document.write(o.hasOwnProperty("x"));  //返回true  o中含有名为"x"的属性
        document.write(o.hasOwnProperty("y"));  //返回false  o中不含有名为"y"的属性

属性的特性

 writeable:是否可写。

    enumerable:是否可枚举。

    configurable:是否可配置。

闭包

function outer() { var a = '变量1' var inner = function () { console.info(a) } return inner // inner 就是一个闭包函数,因为他能够访问到outer函数的作用域 }


闭包有三个特性:  

  1. 函数嵌套函数。
  2. 函数内部可以引用外部的参数和变量。
  3. 参数和变量不会被垃圾回收机制回收。

闭包的好处:

  1. 希望一个变量长期存储在内存中。
  2. 避免全局变量的污染。
  3. 私有成员的存在

闭包的缺点:

  1. 常驻内存,增加内存使用量。无法被垃圾回收机制回收;
  2. 使用不当会很容易造成内存泄露。

猜你喜欢

转载自www.cnblogs.com/jiangquhan/p/11827074.html
今日推荐