首页 > 网站 > WEB开发 > 正文

JavaScript Patterns 3.2 Custom Constructor Functions

2024-04-27 14:23:23
字体:
来源:转载
供稿:网友

javaScript Patterns 3.2 Custom Constructor Functions

2014-05-28 22:56 by 小郝(Kaibo Hao), ... 阅读, ... 评论, 收藏, 编辑

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).

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" 

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.

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;};// testvar o = new Objectmaker();console.log(o.name); // "And that's that" 

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.


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表