作用域安全的构造函数以及js对象的创建步骤
2016-09-12 15:20
295 查看
//分离构造器 通过new操作符构建一个对象,一般经过四个步骤: A.创建一个对象 B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象) C.执行构造函数中的代码 D.返回这个新对象 最后一点就说明了,我们只要返回一个新对象即可。其实new操作符主要是把原型链跟实例的this关联起来,这才是最关键的一点,所以我们如果需要原型链就必须要new操作符来处理。否则this就变成window对象了。 我们来剖析一下jquery的这个结构,以下是我我们常见的类的写法: var $$ = aJQuery = function(selector){ this.selector = selector; return this; } aJQuery.fn = aJQuery.prototype = { selectorName:function(){ return this.selector; }, constructor:aJQuery } var a = new $$('aaa'); a.selectorName(); 改造成不用new的格式,我们可以通过instanceof判断this是否为当前的实例: var $$ = aJQuery = function(selector){ if(!(this instanceof aJQuery)){ return new aJQuery(selector); } this.selector = selector; return this; }
相关文章推荐
- js实现td排序及分组分类
- jsp页面中判空及date类型数据的格式化展示
- JavaScript学习笔记之自定义对象
- Front End Developer Questions 前端开发人员问题(三)JavaScript部分
- 让C#可以像Javascript一样操作Json
- json字符串转数组转对象
- 前台JSP传中文到后台乱码问题解决
- JSR311中的小tip mark
- JavaScript学习笔记之事件对象
- js获取html中body与div宽高
- checkbox 实现单选
- JavaScript小数点后保留N位
- Maven工程JSP页面无法加载.js文件的解决方案
- JSP之JSTL_functions
- js简单算法(二)如何去除一个数组中与另一个数组中的值相同的元素
- JavaScript学习笔记之事件冒泡和事件捕获
- 笔记:JS仿excel十进制和26进制转换算法
- <jsp:include>和<%@include%>的区别
- ExtJS 获取单选按钮的值 radiogroup 获取值 fieldset(radio) 获取值
- 后台response输出js脚本弹出alert出现乱码