首页 > 代码库 > JS 创建对象(常见的几种方法)
JS 创建对象(常见的几种方法)
参考 : http://www.jb51.net/article/16366.htm
//1.工厂模式
function createPerson(name, age, job) { var o = {}; o.name = name; o.age = age; o.job = job; o.sayName = function() { alert(this.name); }; return o; } var tanya = new Person("tanya", "30", "female"); var ansel = new Person("ansel", "30", "male"); tanya.sayName(); ansel.sayName();
/*
*2.构造函数方法
*因为this就表示当前运行时的对象,将构造函数this的作用域指向新对象,
*将当前运行对象的属性和方法都赋给新对象,这样对象模式称为构造函数模式
*/
function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.sayName = function() { alert(this.name); }; } var tanya = new Person("tanya", "30", "female"); var ansel = new Person("ansel", "30", "male"); tanya.sayName(); ansel.sayName();
//3.原型链
//原型模式就要考虑原型链了,分析一下,sayName方法在实例中被重复定义了两次,
//但其实没有必要创造两个一样的副本。
//使用原型方法,可以使得tanya和ansel的共享一个sayName方法。
function Person(name, age, job) { this.name = name; this.age = age; this.job = job; } Person.prototype.sayName = function() { alert(this.name); }; var tanya = new Person("tanya", "30", "female"); var ansel = new Person("ansel", "30", "male"); tanya.sayName(); ansel.sayName();
/*4. 实际应用时,不是一成不变的套用某种模式,活学活用。
1)需要共享方法的时候就用原型模式,
2)需要使用副本的时候就用构造模式,
3)还可以结合起来,把所有信息都封装在构造函数中,而通过在构造函数中初始化原型,
使得对象保持了同时使用构造函数和原型的优点。 */
function Person(name, age, job) { this.name = name; this.age = age; this.job = job; if (typeof sayName != "function") { Person.prototype.sayName = function() { alert(this.name); }; } } var tanya = new Person("tanya", "30", "female"); var ansel = new Person("ansel", "30", "male"); ansel.sayName = function() { alert("Hi ansel, how hansome you are!"); } tanya.sayName(); ansel.sayName(); tanya.sayName();
JS 创建对象(常见的几种方法)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。