函数对象和闭包的预习
Posted jiangquhan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数对象和闭包的预习相关的知识,希望对你有一定的参考价值。
创建对象;
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函数的作用域 }
闭包有三个特性:
- 函数嵌套函数。
- 函数内部可以引用外部的参数和变量。
- 参数和变量不会被垃圾回收机制回收。
闭包的好处:
- 希望一个变量长期存储在内存中。
- 避免全局变量的污染。
- 私有成员的存在
闭包的缺点:
- 常驻内存,增加内存使用量。无法被垃圾回收机制回收;
- 使用不当会很容易造成内存泄露。
以上是关于函数对象和闭包的预习的主要内容,如果未能解决你的问题,请参考以下文章