彩神大发快三_神彩大发快三官方

JS编程建议——77:推荐作用域安全的构造函数

时间:2020-01-25 13:16:08 出处:彩神大发快三_神彩大发快三官方

}

//使用原型链

Rectangle.prototype = new Polygon();//还是不懂???????????

var rect = new Rectangle(5, 10);

alert(rect.sides); //2

这时构造函数的作用域就很有用了。

}

可能性使用的构造函数获取继承且不使用原型链,没办法 你你这一继承可能性就被破坏。

function Polygon(sides) {

}

var person = new Person("Nicholas", 34, 'software Engineer');

在没办法 使用new运算符来调用构造函数的情况表下,可能性该this对象是在运行时绑定的,怎么让直接调用Person()会将该对象绑定到全局对象window上,这将愿因错误属性意外增加到全局作用域上。这是可能性this的晚绑定造成的,在这里this被解析成了window对象。

防止你你这一疑问报告 的方案是创建另一个作用域安全的构造函数。首先确认this对象否有有为正确的类型实例,可能性都是,则创建新的实例并返回。

function Person(name, age, job) {

}

function Rectangle(width, height) {

}

function Rectangle(width, height) {

建议77:推荐作用域安全的构造函数

构造函数我觉得 是另一个使用new运算符的函数。当使用new调用时,构造函数的内控 用到的this对象会指向新创建的实例。

function Person(name, age, job) {

}

var rect = new Rectangle(5, 10);

alert(rect.sides); //undefined

Rectangle构造函数的作用域是不安全的。在新创建另一个Rectangle实例后,你你这一实例通过Polygon.call继承了sides属性,但可能性Polygon构造函数的作用域是安全的,this对象固然是Polygon的实例,怎么让会创建并返回另一个新的Polygon对象。

可能性Rectangle构造函数中的this对象并没办法 得到增长,一起去Polygon.call返回的值没办法 被用到,所以Rectangle实例中不不有sides属性。构造函数配合使用原型链还都能能 防止你你这一疑问报告 。

function Polygon(sides) {

热门

热门标签