码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript 创建对象

时间:2016-12-26 21:54:01      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:type   产生   on()   rip   工厂   name   组合   javascrip   好的   

有三种基本的方式可以创建对象: 工厂模式、构造函数模式和原型模式

工厂模式:

function createPerson(name, age) {
    var o = new Object();
    o.name = name;
    o.age = age;
    o.getName = function() {
        alert(this.name);
    };
    
    return o;       
}

var person1 = createPerson(‘james‘, 18);

 构造模式

function Person(name, age) {
	this.name = name;
	this.age = age;
	this.sayName = function() {
		alert(this.name);
	};
}

var person1 = new Person(‘james‘, 18);

 原型模式

function Person() {};

    Person.prototype.name = ‘james‘;
    Person.prototype.age = 18;
    Person.prototype.getName = function() {
    alert(this.name);
};

var person1 = new Person();

理解原型对象:

当定义构造函数Person时,会自动生成一个Person的原型对象Person.prototype;

Person.prototype中同时自动生成属性constructor指向Person;

注意: 如果用对象字面量重新定义原型对象时,需要添加属性constructor指向构造函数;

 

工厂模式每次都会生产出一个实例返回,类和封装的实现没有达到;

构造函数模式每次新建一个实例,其中的共通方法(函数)都会产生一个新的实例;

原型模式未实现每个实例得私有属性;

 

因此,最好的创建对象的模式为:

组合使用构造函数模式和原型模式

function Person(name, age) {
    this.name = name;
    this.age = age;
    this.friends = [];
}

Person.prototype = {
    constructor: Person,
    sayName: function() {
        alert(this.name);
    }
};

var Person1 = new Person(‘james‘, 18);

 

JavaScript 创建对象

标签:type   产生   on()   rip   工厂   name   组合   javascrip   好的   

原文地址:http://www.cnblogs.com/dreamerjdw/p/6223858.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!