作用域安全的构造函数
来源:互联网 发布:全国流动人口监测数据 编辑:程序博客网 时间:2024/05/18 03:32
问题引入:
之前看到《js语言精粹》上,介绍js语言的糟粕,其中之一就是全局对象。当在使用构造函数时,可能忘记写new,那对象就添加到了全局对象window上,导致了错误对象属性的意外增加。
比如,一个构造函数:
function Person(gender,age){ this.gender = gender; this.age = age;}
正确的打开方式应该是var p = new Person()
,this指向新创建的对象。但是当忘记使用new时,如var p1 = Person()
, 相当于直接调用函数,this指向全局对象。
var p = new Person('女',18);console.log(p.gender); //weiconsole.log(window.gender); //undefinedvar p1 = Person('男',23);console.log(p1.gender); //Error,p1为undefinedconsole.log(window.gender); //xiao
作用域安全的构造函数:不论是否使用new,都返回一个Person的新实例。
function Polygon(sides) { if (this instanceof Polygon) { this.sides = sides; this.getArea = function() { return 0; } } else { return new Polygon(name); } } function Rectangle(width, height) { Polygon.call(this, 2); //借用构造函数 this.width = width; this.height = height; this.getArea = function() { return this.width * this.height; } } Rectangle.prototype = new Polygon(); //原型链继承,实现Rectangle实例也是一个Polygon实例,从而通过Polygon构造函数中`if (this instanceof Polygon)`的校验。 var rect = new Rectangle(5,10); alert(rect.sides);
阅读全文
0 0
- 作用域安全的构造函数
- 作用域安全的构造函数
- 作用域安全的构造函数
- js作用域安全的构造函数
- 作用域安全的构造函数
- 作用域安全的构造函数
- 作用域安全的构造函数
- JS高级编程5-作用域安全的构造函数
- 函数柯理化以及构建作用域安全的构造函数
- JavaScript之安全作用域的构造函数(高级函数)
- 作用域安全的构造函数以及js对象的创建步骤
- 构造函数的作用
- 构造函数的作用
- 构造函数的作用
- 构造函数的作用.
- 构造函数的作用
- javascript创建构造函数时作用域安全,即怎样保证一直都是构造函数
- 【构造函数】解析构造函数的作用
- 浏览器更新HTTP服务器图片并显示
- Servlet(Config、Context)
- (UVA
- OpenStreetMap/Google/百度/Bing瓦片地图服务(TMS)
- Hive学习笔记 --- 查看Table在HDFS中存储的位置
- 作用域安全的构造函数
- TCP_DEFER_ACCEPT
- MySQL 数据类型
- 关于mysql 查询 按汉字的首字母进行排序和查找某个以某字母开头的谋汉字
- 部分字节对齐内容整理(适用于C++中)
- Tips—1(c标签)
- sizeof和strlen与数组之间的恩恩怨怨
- C#基础之显示当前时间
- top.location.href和localtion.href有什么不同