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']//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创建对象的三种方法:文本标识法和构造器函数法和返回对象的函数的更多相关文章
- js创建对象的三种方法
1.使用对象初始化器:{} var person = {....} 2 var person=new object() function person(参数) { this.参数=... } var ...
- Javascript 创建对象的三种方法及比较【转载+整理】
https://developer.mozilla.org/zh-CN/docs/JavaScript/Guide/Inheritance_and_the_prototype_chain 本文内容 引 ...
- js创建对象的三种方式和js工厂模式创建对象
文章地址: https://www.cnblogs.com/sandraryan/ 创建对象 创建对象的三种方式 构造函数 ,是一种特殊的方法.主要用来在创建对象时初始化对象 1. 调用系统的构造函数 ...
- OC和JS交互的三种方法
看简书上说一共有六种OC和JS交互的方法,但是前三种原理都一致,都是通过检测.拦截Url地址实现互相调用的.剩下的react native等第三方框架原理不一样,也没有去研究,下边记录我使用的三种方法 ...
- js创建对象的三种方式
<script> //创建对象的三种方式 // 1.利用对象字面量(传说中的大括号)创建对象 var obj1 = { uname: 'ash', age: 18, sex: " ...
- js 创建对象的几种方法
1. 使用object创建 var person = new Object(); person.name = "Tom"; person.age = "29"; ...
- C++创建对象的三种方法
我自己以前经常弄混 A a(1); 栈内存中分配 A b = A(1); 栈内存中分配,和第一种无本质区别 A c = new A(1); 堆内存中分配 前两种在函数体执行完毕之后会被释放,第三种需要 ...
- JavaScript创建对象的三种方法
在 JavaScript 中我们知道无法通过类来创建对象,那么如何创建对象呢? (1)通过“字面量”方式创建对象 将你的信息写到{ }中,并赋值给一个变量,此时这个变量就是一个对象,例: var ga ...
- 判断点击第几个按钮JS代码的三种方法
方法一:使用下标实现<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
随机推荐
- C++之函数指针
函数指针常用的有三类 1.指向普通函数的函数指针 2.指向类中静态成员函数的函数指针 3.指向类的成员函数的函数指针 一.指向普通函数的函数指针 #include <iostream> u ...
- JavaScript高级程序设计4.pdf
虽然执行环境的类型总共只有两种——全局和局部(函数),但还有其他方法延长作用域链,有些语句可以在作用域链的前端临时增加一个变量对象,执行后会被移除try-catch语句的catch块和with语句 w ...
- (转载)绿色版Mysql的安装配置
本文出自于:http://johnnyhg.javaeye.com/blog/245544 一.下载MySQL http://www.mysql.org/downloads 我下载的是mysql-no ...
- CSS 属性 - 伪类和伪元素
CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果.这里特殊指的是两者描述了其他 cs ...
- Epoll之ET、LT模式
Epoll之ET.LT模式 在使用epoll时,在函数 epoll_ctl中如果不设定,epoll_event 的event默认为LT(水平触发)模式. 使用LT模式意味着只要fd处于可读或者可写状态 ...
- Hibernate常用接口
Hibernate的接口类型 在了解了Hibernate的基本配置,映射文件后,道路已经铺平了.我们继续往前走.接下来,我们应该做的是了解Hibernate常用的接口,对Hibernate的工作方式进 ...
- jersey 过滤器
这里使用的Jersey 是 1.1 版本 1. web.xml 配置 <?xml version="1.0" encoding="UTF-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 ...
- 四种数据持久化方式(下) :SQLite3 和 Core Data
在上文,我们介绍了iOS开发中的其中2种数据持久化方式:属性列表.归档解档. 本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文 ...
- 4 - SQL Server 2008 之 使用SQL语句删除表格
使用删除表格的SQL命令与删除数据的命令一样,只是删除的是表格这个对象, 语法如下:DROP TABLE 表名 一般在删除表格之前,需判断这个表格存不存在,存在则删除,不存在则不进行执行任何代码. 代 ...