JavaScript Patterns 3.2 Custom Constructor Functions

When you invoke the constructor function with new, the following happens inside the function:

? An empty object is created and referenced by this variable, inheriting the prototype of the function.

? Properties and methods are added to the object referenced by this.

? The newly created object referenced by this is returned at the end implicitly (if no other object was returned explicitly).

JavaScript Patterns 3.2 Custom Constructor Functions
var Person = function (name) {

    this.name = name;

    this.say = function () {

        return "I am " + this.name;

    };

};   

var adam = new Person("Adam");

adam.say(); // "I am Adam" 
JavaScript Patterns 3.2 Custom Constructor Functions

Note

reusable members, such as methods, should go to the prototype.

Person.prototype.say = function () {

    return "I am " + this.name;

};

Constructor‘s Return Values

When invoked with new, a constructor function always returns an object inheriting from the constructor‘s prototype.

JavaScript Patterns 3.2 Custom Constructor Functions
var Objectmaker = function () {

    // this `name` property will be ignored

    // because the constructor

    // decides to return another object instead

    this.name = "This is it";

    // creating and returning a new object

    var that = {};

    that.name = "And that‘s that";

    return that;

};

// test

var o = new Objectmaker();

console.log(o.name); // "And that‘s that"   
JavaScript Patterns 3.2 Custom Constructor Functions

You have the freedom to return any object in your constructors, as long as it‘s an object. Attempting to return something that‘s not an object (like a string or a boolean false, for example) will not cause an error but will simply be ignored, and the object referenced by this will be returned instead.

JavaScript Patterns 3.2 Custom Constructor Functions,布布扣,bubuko.com

JavaScript Patterns 3.2 Custom Constructor Functions

上一篇:Spring MVC学习笔记(一)--------准备篇


下一篇:Java多线程之Wait()和Notify()