javascript创建对象的方法有很多种,一般来说,推荐使用对象字面量来创建对象。

对象构造函数捕捉

使用new Object来创建对象,可能会带来一些问题:

var o = new Object();
console.log(o.constructor === Object);//true var o = new Object(1);
console.log(o.constructor === Object);//false
console.log(o.constructor === Number);//true var o = new Object("hi");
console.log(o.constructor === String);//true
console.log(typeof o.substring);//'function'

自定义构造函数
使用new创建对象时,首先创建一个空对象,然后将其[[prototype]]指向构造函数的原型对象,然后执行构造函数,将this的属性和方法添加到创建的空对象里面,最后隐形返回这个对象:

var Person = function(){
//var this={};
this.name = "Rose";
this.sayName = function(){
console.log("I am"+this.Name);
};
//return this;
};

构造函数的返回值:

var Person = function(){
this.name = "Rose";
var that = {};
that.name = "Mary";
return that;
}; var person = new Person();
console.log(person.name);//"Mary"

就是说,如果返回的是一个对象,将覆盖默认的对象,但是如果返回的不是对象,而是值,虽然不会造成错误,但是函数会忽略该值。

强制使用new的模式:

有时候,如果忘记使用new,将造成一些错误,为了避免这类错误,可以使用的写法:

var Person = function(nameStr){
var that = {};
that.name = nameStr;
return that;
}; var girl = new Person("Mary");
console.log(girl.name);//"Mary" var boy = Person("Mike");
console.log(boy.name);//"Mike"

javascript创建对象的相关问题的更多相关文章

  1. Javascript 创建对象方法的总结

    最近看了一下<Javascript高级程序设计(第三版)>,这本书很多人都推荐,我也再次郑重推荐一下.看过之后总得总结一下吧,于是我选了这么一个主题分享给大家. 使用Javascript创 ...

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

    javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON:但写法有很多种,也能混合使用.主要为下面几种:1.对象字面量的方式 person={firstname ...

  3. javascript创建对象的方法总结

    Javascript创建对象 最简单的方法:创建object实例. var person=new Object(); person.name="Joey";person.age=2 ...

  4. JavaScript创建对象(三)——原型模式

    在JavaScript创建对象(二)——构造函数模式中提到,构造函数模式存在相同功能的函数定义多次的问题.本篇文章就来讨论一下该问题的解决方案——原型模式. 首先我们来看下什么是原型.我们在创建一个函 ...

  5. Javascript 创建对象的三种方法及比较【转载+整理】

    https://developer.mozilla.org/zh-CN/docs/JavaScript/Guide/Inheritance_and_the_prototype_chain 本文内容 引 ...

  6. JavaScript创建对象的6种方式

    JavaScript创建对象简单的说,无非就是使用内置对象(Object)或各种自定义对象,当然还可以用JSON,但写法有很多种,也能混合使用. 1.对象字面量的方式 person = {name : ...

  7. JavaScript 创建对象的七种方式

    转自:xxxgitone.github.io/2017/06/10/JavaScript创建对象的七种方式/ JavaScript创建对象的方式有很多,通过Object构造函数或对象字面量的方式也可以 ...

  8. Javascript创建对象几种方法解析

    Javascript创建对象几种方法解析 Javascript面向对象编程一直是面试中的重点,将自己的理解整理如下,主要参考<Javascript高级程序设计 第三版>,欢迎批评指正. 通 ...

  9. JavaScript创建对象的几种 方式

    //JavaScript创建对象的七种方式 //https://xxxgitone.github.io/2017/06/10/JavaScript%E5%88%9B%E5%BB%BA%E5%AF%B9 ...

随机推荐

  1. C#应用程序单进程检测

    以下程序经过VS2010测试通过: /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Ma ...

  2. OkHttp 源码分析

    在工作中用到封装HTTP传输的OkHTTP,OkHttp是相对成熟的解决方案,同时也是开源项目.本文将从源码角度看下OkHttp是如何实现一些网络操作的. HTTP GET: OkHttpClient ...

  3. [JS]Javascript的this用法

    转自:阮一峰 this是Javascript语言的一个关键字. 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如, function test(){ this.x = 1; } 随着 ...

  4. WindowsForm通过字符串名称实例化控件

    private Control FindControl(Control control, string controlName) { Control c1; foreach (Control c in ...

  5. 转--简单工厂模式 Simple Factory

    简单工厂模式的作用就是定义一个用于创建对象的接口 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化.         先来看看它的组成: 1) 工厂类角色 ...

  6. OSTimeDelay(1)

    当OS_TICKS_PER_SEC=100HZ ,即每个时钟节拍10ms;如果想延时10ms而调用OSTimeDelay(1)是不行的,调用该函数至少要2个时钟节拍才不会因时间太短,调度跟不上而产生错 ...

  7. 树莓派,使用opencv调用自带的摄像头

    OpenCV&Pi Cam – Step 1 : Install It’s quite easy to install your new Pi Camera. Installation pro ...

  8. 三、jdk工具之jstack(Java Stack Trace)

    目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...

  9. Git的撤消操作 - 重置, 签出 和 撤消(转载)

    From:http://gitbook.liuhui998.com/4_9.html http://ihower.tw/blog/archives/2622 相较于SVN这种commit就推送到远端伺 ...

  10. php 封装mysql 数据库操作类

    <?phpheader('content-type:text/html;charset=utf-8');//封装mysql   连接数据库php_mysql//封装mysql   连接数据库ph ...