JS 创建对象的7种方法(一)

1.工厂模式(Factory)

 1 function createPerson(name, age, title){
 2     var o = new Object();
 3     o.name = name;
 4     o,age = age;
 5     o.title = title;
 6     o.sayName = function(){
 7         alert(this.name);
 8     }
 9     return o;
10 }
11
12 var person1 = createPerson("Greg", 30, "Doctor");
13 var person2 = createPerson("Lisa", 20, "Teacher");  

工厂模式不能识别对象的类型。

2.构造函数模式(Constructor)

 1 function Person(name, age, job){
 2     this.name = name;
 3     this.age = age;
 4     this.job = job;
 5     this.sayName = function(){
 6         alert(this.name);
 7     }
 8 }
 9 var person1 = new Person("Nicholas", 18, "Software Engineer");
10 var person2 = new Person("Greg", 27, "Doctor");   

按照惯例,构造函数始终都应以一个大写字母开头。

要创建一个Person的新实例,必须使用new操作符。

person1和person2分别保存着Person的一个不同的实例,这两个对象都有一个constructor属性,该属性指向Person:

alert(person1.constructor == Person)  //true
alert(person2.constructor == Person)  //true

构造函数的问题: 构造函数中的所有方法都要在每个实例上重新创建一遍。

alert(person1.sayName == person2.sayName);    //false
时间: 2024-08-06 11:58:24

JS 创建对象的7种方法(一)的相关文章

js创建对象的两种方法:文本标识法和构造器函数法

文本标识法和定义变量差不多,像这样 var obj = {name:'HanMM','2':'Dali'}; 函数构造器法  先创建一个对象函数 function Obj() { this.address='New York' , this.sayHello = function (){ return this.address; } } 然后用new关键字来穿件具体的对象 var obj001 = new Obj(); 然后我们就可以调用对象了 obj.name//  HanMM obj['2'

js创建对象的四种方式以及消耗时间比较

// Property-less object console.time('zoop1'); var zoop = (function (numObjects) { var pooz = Object.create(null); for(var i = 0; i< numObjects; i++) { pooz[i] = Object.create(null); } return pooz; })(1000000); console.timeEnd('zoop1'); // Using Obje

动态加载JS脚本的4种方法

要实现动态加载JS脚本有4种方法: 1.直接document.write <script language="javascript"> document.write("<script src='test.js'><\/script>"); </script>   2.动态改变已有script的src属性 <script src='' id="s1"></script> <

js去除空格12种方法

注:本文转载于csdn:黄卉博主的文章<js去除空格12种方法> 实现1 1 String.prototype.trim = function() { 2 return this.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); 3 } 看起来不怎么样, 动用了两次正则替换,实际速度非常惊人,主要得益于浏览器的内部优化.一个著名的例子字符串拼接,直接相加比用Array做成的StringBuffer 还快.base2类库使用这种实现.实现2 1 Strin

判断JS数据类型的几种方法

原文转自http://www.cnblogs.com/onepixel/p/5126046.html! 说到数据类型,我们先说一下JavaScript 中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Function,Array,RegExp,Date,... 很多时候我们都需要通过判断变量的数据类型来进行下一步操作,下面我们介绍常用的4种方法: typeof ''; // strin

js创建对象的几种模式

//javaScript创建对象的几种模式特点 /*//1 工厂模式function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=function() { alert(name); }} createPerson("Tom",18,"Teachaer");createPerson("Jack",20,"Student"

js - 创建对象的几种方式(工厂模式、构造函数模式、原型模式)

原文引用https://www.dazhuanlan.com/2019/08/26/5d62f8b594f10/ 工厂模式 做法:内部创建一个对象,并未对象属性赋值并且返回 缺点:解决创建多个相识对象的问题,但不能识别创建的对象的类型 构造函数模式 做法:直接将属性和方法赋值给 this 对象,没有 return 语句 缺点:对象不是共用方法和属性,每 new 一次对象就要创建一个内存,超出性能消耗 原型模式 做法:通过 prototype 为对象添加属性 缺点:每个实例都共享属性方法,实例中修

Java创建对象的几种方法

有时候,也可能碰到这样面试题,如: Java创建对象有哪几种方法? 除了new之外,java创建对象还有哪几种方式? 本文结合例子,给出几种Java创建对象的方法,Here we go~~~~ 使用new创建 这是最常用的一种.如: Book book = new Book(); 示例如下: package test; import java.io.Serializable; import java.util.List; /** * @author wangmengjun * */ public

【转载】C++创建对象的两种方法

原文:http://blog.sina.com.cn/s/blog_586b6c050100dhjg.html 在C++里,有两种方法创建对象: 方法一: ClassName object(param); 这样就声明了一个ClassName类型的object对象,C++会为它分配足够的存放对象所有成员的存储空间. 注意:为节省存储空间,C++创建对象时仅分配用于保存数据成员的空间,而类中定义的成员函数则被分配到存储空间中的一个公用区域,由该类的所有对象共享. 例如,我定义了一个这样的类: cla