de seguridad restringida de funciones de alto nivel de la constructora

Constructores conocen. Es una llamada a la función usando el nuevo operador. Cuando una nueva llamada, este objeto se utiliza en los puntos de constructor a la instancia del objeto recién creado.

function Person(name,age,job) {
    this.name = name;
    this.age = age;
    this.job = job;
}
let person = new Person('yk',27,'software Engineer')

El ejemplo anterior, esta persona constructor de objetos se utiliza para asignar tres propiedades, nombre, edad y trabajo. Cuando no hay un nuevo problema, cuando se le llama directamente, esto se asigna a la ventana global superior. Crear un constructor de seguridad restringida puede resolver este problema.

function Person(name,age,job) {
    if(this instanceof Person) {
            this.name = name;
            this.age = age;
            this.job = job;
    } else {
        return new Person(name,age,job)
    }
}

EG2:

function Polygon(sides) {
    if(this instanceof Polygon) {
        this.sides = sides;
        this.getArea = function() {
            return 0; } } else { return new Polygon(sides) } } function Rectangle(width,height) { Polygon.call(this, 2); this.width = width; this.height = height; this.getArea = function() { return this.width * this.height; } } let rect = new Rectangle(5, 10); alert(rect.sides) //undefined 

Como el constructor Polígono ámbito de aplicación es segura, este no es el objeto de instancia del polígono, se creará y devolver un nuevo objeto Polígono, este objeto constructor de Rectangle no ha estado creciendo. Mientras tanto valor Polygon.call regresó () para inútil, de modo que habrá casos lados propiedades del rectángulo.

function Polygon(sides) {
    if(this instanceof Polygon) {
        this.sides = sides;
        this.getArea = function() {
            return 0; } } else { return new Polygon(sides) } } 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(); let rect = new Rectangle(5, 10); alert(rect.sides) //2 

Escanear código plus grupo, actualiza a diario una tecnología de front-end artículo para crecer juntos.

 

Supongo que te gusta

Origin www.cnblogs.com/bbqq1314/p/12545478.html
Recomendado
Clasificación