文本标识法和定义变量差不多,像这样

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']//Dali

obj.sayHello();//New York

而如果,我们在使用构造器函数创建对象的时候忘了使用new关键字的话,像这样 var obj002=Obj();去实例化的话,其实和声明函数没有区别,由于该函数没有显式返回值,那么返回值为undefined,我们只是创建了一个函数,而非对象的实例。

当我们想访问其中的某个属性时得到的结果也只能是 Uncaught TypeError: Cannot read property 'address' of undefined

返回对象的函数 

function tom(Name) {

return { name: Name }

} ;

var obj007 = tom('王大锤') ;

obj007.name;//   王大锤

obj007.constructor;// ==>> function Object();

constructor property 构造器属性,其实就是一个指向于一个用于创建该对象的构造器函数的引用;

也就是说function TomG(){}; var obj004= new TomG();

obj004.constructor;// ==>> function TomG();

而如果使用文本标识法创建的对象var tomG = {};

tomG.constructor 相当于使用js内置构造器Objet()函数创建的,故 tomG.constructor; // ==>> function Object();

PS其实构造器函数也是可以返回对象的,且当且仅当构造器函数返回的是对象的时候才可以当做对象使用,若返回其他类型的数据则此时的对象是this,即window;

function Objs() {

this.address='New York' ;

return {  home:'London' }

}

var obj008 = new Objs();

typeof obj008.address;//undefined;

obj008.home;//London;

js创建对象的三种方法:文本标识法和构造器函数法和返回对象的函数的更多相关文章

  1. js创建对象的三种方法

    1.使用对象初始化器:{} var person = {....} 2 var person=new object() function person(参数) { this.参数=... } var ...

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

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

  3. js创建对象的三种方式和js工厂模式创建对象

    文章地址: https://www.cnblogs.com/sandraryan/ 创建对象 创建对象的三种方式 构造函数 ,是一种特殊的方法.主要用来在创建对象时初始化对象 1. 调用系统的构造函数 ...

  4. OC和JS交互的三种方法

    看简书上说一共有六种OC和JS交互的方法,但是前三种原理都一致,都是通过检测.拦截Url地址实现互相调用的.剩下的react native等第三方框架原理不一样,也没有去研究,下边记录我使用的三种方法 ...

  5. js创建对象的三种方式

    <script> //创建对象的三种方式 // 1.利用对象字面量(传说中的大括号)创建对象 var obj1 = { uname: 'ash', age: 18, sex: " ...

  6. js 创建对象的几种方法

    1. 使用object创建 var person = new Object(); person.name = "Tom"; person.age = "29"; ...

  7. C++创建对象的三种方法

    我自己以前经常弄混 A a(1); 栈内存中分配 A b = A(1); 栈内存中分配,和第一种无本质区别 A c = new A(1); 堆内存中分配 前两种在函数体执行完毕之后会被释放,第三种需要 ...

  8. JavaScript创建对象的三种方法

    在 JavaScript 中我们知道无法通过类来创建对象,那么如何创建对象呢? (1)通过“字面量”方式创建对象 将你的信息写到{ }中,并赋值给一个变量,此时这个变量就是一个对象,例: var ga ...

  9. 判断点击第几个按钮JS代码的三种方法

    方法一:使用下标实现<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...

随机推荐

  1. C++之函数指针

    函数指针常用的有三类 1.指向普通函数的函数指针 2.指向类中静态成员函数的函数指针 3.指向类的成员函数的函数指针 一.指向普通函数的函数指针 #include <iostream> u ...

  2. JavaScript高级程序设计4.pdf

    虽然执行环境的类型总共只有两种——全局和局部(函数),但还有其他方法延长作用域链,有些语句可以在作用域链的前端临时增加一个变量对象,执行后会被移除try-catch语句的catch块和with语句 w ...

  3. (转载)绿色版Mysql的安装配置

    本文出自于:http://johnnyhg.javaeye.com/blog/245544 一.下载MySQL http://www.mysql.org/downloads 我下载的是mysql-no ...

  4. CSS 属性 - 伪类和伪元素

    CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果.这里特殊指的是两者描述了其他 cs ...

  5. Epoll之ET、LT模式

    Epoll之ET.LT模式 在使用epoll时,在函数 epoll_ctl中如果不设定,epoll_event 的event默认为LT(水平触发)模式. 使用LT模式意味着只要fd处于可读或者可写状态 ...

  6. Hibernate常用接口

    Hibernate的接口类型 在了解了Hibernate的基本配置,映射文件后,道路已经铺平了.我们继续往前走.接下来,我们应该做的是了解Hibernate常用的接口,对Hibernate的工作方式进 ...

  7. jersey 过滤器

    这里使用的Jersey 是 1.1 版本 1.  web.xml 配置 <?xml version="1.0" encoding="UTF-8"?> ...

  8. [Javascript] Creating an Immutable Object Graph with Immutable.js Map()

    Learn how to create an Immutable.Map() through plain Javascript object construction and also via arr ...

  9. 四种数据持久化方式(下) :SQLite3 和 Core Data

    在上文,我们介绍了iOS开发中的其中2种数据持久化方式:属性列表.归档解档. 本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文 ...

  10. 4 - SQL Server 2008 之 使用SQL语句删除表格

    使用删除表格的SQL命令与删除数据的命令一样,只是删除的是表格这个对象, 语法如下:DROP TABLE 表名 一般在删除表格之前,需判断这个表格存不存在,存在则删除,不存在则不进行执行任何代码. 代 ...