/**
* Created by 2016 on 2016/6/4.
*/
function Box(){
var obj = new obj();
obj.name = "Lee";
obj.run = function(){
return this.name+"run";
};
return obj;
}
var B = Box();
//工厂模式创建对象 在对象中创建obj,在最后返回obj对象 function Box(){
this.name = "Lee";
this.run = function(){
return this.name+"run";
};
}
var B = new Box();
//构造函数模式 使用new运算符创建对象 function Box(){};
Box.prototype.name = "Lee";
Box.prototype.run = function(){
return this.name+"run";
}; var B = new Box();
//原型模式创建,prototype为原型属性。
//优点:方法共享,缺点:属性共享 function Box(){};
Box.prototype = {
constructor:Box,//强制指向Box原型,否则指向object
name:"Lee",
run:function(){
return this.name+"run";
}
};
var B = new Box();
//原型模式,字面量形式创建。这里不能重写字面量,会导致之前的连接断开
//缺点:无法传递参数,所有属性共享 function Box(){
this.name = "Lee";
Box.prototype.run = function(){
return this.name+"run";
};
};
var B = new Box();
//原型+构造函数模式创建,这里每一个实例的run都会初始化一次,所以可以使用动态的原型+构造
//函数模式 function Box(){
this.name = "Lee";
if(typeof Box.prototype.run != "function"){
Box.prototype.run = function(){
return this.name+"run";
};
} };
var B = new Box(); //动态创建。这里的run只会被初始化一次,并且方法是共享的,节省内存 //创建对象的方法有很多,使用动态的原型+构造函数模式创建比较好。
//实例属性独立,方法共享。
function Box(){
var obj = new Array();
obj.name = "Lee";
obj.run = function(){
return this.name+"run";
};
return obj;
} var B = new Box(); //寄生构造函数模式 除了使用new操作符创建对象之外,和工厂模式是一致的

JavaScript 对象的几种创建方法的更多相关文章

  1. 面向面试编程——javascript对象的几种创建方式

    javascript对象的几种创建方式 总共有以下几个模式: 1.工厂模式 2.构造函数模式 3.原型模式 4.混合构造函数和原型模式 5.动态原型模式 6.寄生构造函数模式 7.稳妥构造函数模式 1 ...

  2. JavaScript对象的几种创建方式与优缺点

    JavaScript中常见的几种创建对象的方式有:Object构造函数模式.对象字面量模式.工厂模式.自定义构造函数模式.构造函数加原型组合模式:他们各自有各自的优缺点和使用场景. 1. Object ...

  3. Javascript对象的几种创建方式

    (1) 工厂模式 Function(){ Var child = new object() Child.name = “欲泪成雪” Child.age=”20” Return child; } Var ...

  4. pandas-01 Series()的几种创建方法

    pandas-01 Series()的几种创建方法 pandas.Series()的几种创建方法. import numpy as np import pandas as pd # 使用一个列表生成一 ...

  5. 创建javascript对象的几种方式

    ECMAScript提供的对象有:String.Date.Array.Boolean.Math.Number.RegExp.Global 程序中需要用到很多自定义的js对象 1.直接创建 var ob ...

  6. JavaScript函数的4种调用方法详解

    在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C#或其他描述性语言那样仅仅作为一个模块来使用.函数有四种调用模式,分别是:函数调用形式.方法调用形式.构造 ...

  7. JavaScript 函数的4种调用方法

    JavaScript 函数有 4 种调用方式. 每种方式的不同方式在于 this 的初始化. 作为一个函数调用 function myFunction(a, b) { return a * b; } ...

  8. RealSense开发-Session和SenseManager的几种创建方法

    从Intel RealSense 的SDK文档对其架构(如图1所示)的始描述可知,Session是SDK应用的主控模块,必须在所有模块操作之前创建,并且在所有模块注销后最后注销.SenseManage ...

  9. 【JavaScript】浅析JavaScript对象如何添加属性和方法

    向JavaScript类中添加属性和方法,最直观的做法就是在类中定义属性和方法.JavaScript是一门弱语言,除了直接定义还可以用prototype来添加. 下面介绍从外部向JavaScript添 ...

随机推荐

  1. 【转】suid sgid 详解

    转自:http://www.cnblogs.com/fhefh/archive/2011/09/20/2182155.html 如果你对SUID.SGID仍有迷惑可以好好参考一下! Copyright ...

  2. Memcached source code analysis (threading model)--reference

    Look under the start memcahced threading process memcached multi-threaded mainly by instantiating mu ...

  3. 两个字符串,若为数字则都相加,若有一个不为数字则,输出error

    import java.util.*; /*请设计一个算法能够完成两个用字符串存储的整数进行相加操作,对非法输入则返回“error”: * 用例:123 234 * 输出:357 * 用例123 as ...

  4. PHP数据库结果集处理

    mysql连接成功后可以用msql_query来获得一个资源型的结果集. $sql = 'select * from emp_info';$result = mysqli_query($link,$s ...

  5. multi-threads synchronization use conditional mutex

    #include <pthread.h> int thread_flag; pthread_cond_t thread_flag_cv; pthread_mutex_t thread_fl ...

  6. Flume简介与使用(二)——Thrift Source采集数据

    Flume简介与使用(二)——Thrift Source采集数据 继上一篇安装Flume后,本篇将介绍如何使用Thrift Source采集数据. Thrift是Google开发的用于跨语言RPC通信 ...

  7. 关于Git的merge和rebase命令解析

    git rebase是对提交执行变基的操作.即可以实现将指定范围的提交"嫁接"到另外一个提交智商. 其常用的命令格式有: 用法1:git rebase --onto <new ...

  8. Servlet线程安全问题

    Servlet采用单实例多线程方式运行,因此是线程不安全的.默认情况下,非分布式系统,Servlet容器只会维护一个Servlet的实例,当多个请求到达同一个Servlet时,Servlet容器会启动 ...

  9. Guzzle Unable to parse JSON data: JSON_ERROR_SYNTAX - Syntax error, malformed JSON

    项目更新到正式平台时,出现Guzzle(5.3) client get请求出现:Unable to parse JSON data: JSON_ERROR_SYNTAX - Syntax error, ...

  10. JavaScript类型检测, typeof操作符与constructor属性的异同

    *#type.js function Person(name, age) { this.name = name; this.age = age; } var d = {an: 'object'}; v ...