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# TextBox中只允许输入数字的方法

    1.在Winform(C#)中要实现限制Textbox只能输入数字,一般的做法就是在按键事件中处理, 判断keychar的值.限制只能输入数字,小数点,Backspace,del这几个键.数字0-9所 ...

  2. Java 新IO

       NIO提供全新的底层I/O模型.与最初的java.io包中面向流(stream-oriented)概念不同,NIO采用了面向块的概念(block-oriented).在尽可能的情况下,I/O的操 ...

  3. AP_AP系列 - 发票管理分析(案例)

    2014-07-07 Created By BaoXinjian

  4. pandas 0.19.0 documentation

    pandas 0.19.0 documentation » http://pandas.pydata.org/pandas-docs/stable/style.html

  5. URI

    1, URI (标识.定位任何资源的字符串) 在电脑术语中,统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串. 该种标识允许用 ...

  6. iCheck表单美化插件使用方法详解(含参数、事件等)

    iCheck   特色: 1.在不同浏览器(包括ie6+)和设备上都有相同的表现 - 包括 桌面和移动设备 2.支持触摸设备 - iOS.Android.BlackBerry.Windows Phon ...

  7. sql server异地备份数据库

    --注意:异地备份数据库,需要先开启备份文件夹的网络共享,数据库选择master --打开允许执行xp_cmdshell exec master..xp_cmdshell 'net use \\192 ...

  8. 查看Oracle的SID用户名等信息

    源地址:http://zhidao.baidu.com/question/681563406501077052.html 用sysdba身份登录 比如 conn /as  sysdba 匿名管理员登陆 ...

  9. [Java] 字符流Reader,读取字符数据

    package test.stream; import java.io.BufferedReader; import java.io.FileNotFoundException; import jav ...

  10. C# String.Format大全 去 decimal 后面的 0

    转 http://kwon.iteye.com/blog/1068255  http://blog.csdn.net/tvvbbb/article/details/47256943 public st ...