js----对象的创建
js创建对象的三种方法
在介绍之前一定要弄清楚一个概念,比如var a = new Object(); 这里的a并不是一个对象,而是一个对象的实例。
一、用Json创造
var a = {b:1,c:3}; a.b; a.c;
在这种形式下,一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号),“ ‘键/值' 对”之间使用“,”(逗号)分隔。
二、用内置对象创造
内置的有Array、String、Object等等
var a = new Object(); a.name = 'Nic'; a.age = 16; var b = a;//b和a同时引用一个对象 b.name;//Nic b.age;
三、自定义对象
这个用的很普遍,因为Json有一个缺点就是只能创建一个对象,而自定义的话就如同一个模具,可以创建多个对象。(描述有点不准确)
<1>全用this
function A(name ,age) { this.name = name; this.age = age; this.fun = function (){ alert('fun'); }; } var a = new A("Nic",16); a.name;//Nic a.age; a.fun();//弹出'fun'
这样创造对象的特点:写在一个构造函数中,函数中的属性用this.XX = XX;的形式,属性之间‘;(分号)’隔开,创建对象时用new,初始化构造函数。
为什么在function中加this?如果不加this呢?
当你var a = new A("Nic",16);时,A中的this指向a,如果不加this,那么a.name为undefined,特别注意的是如果你不用new,而是var a = A(.....);那么A中的this指向的是Window,“new出来的对象this指向属性和方法依托的对象,不new出来相当于直接调用一个函数,this指向Window。”
为什么说自定义的话像一个模具可以创造多个不同对象呢?
是因为只要改变传入的参数,就可以改变对象。
<2>使用prototype(原型)
function A(name ,age) { this.name = name; this.age = age; } A.prototype.fun = function (){ alert('fun'); }; var a = new A("Nic",16); a.name;//Nic a.age; a.fun();//弹出'fun'
记住一句话,this的属性是私有的,而prototype的是共享的。在两个对象继承时会继承this,而不会继承prototype。
变量ab同时引用一个对象的时候,如果给a单独增加了一个方法a.sum();,那么b是不能调用该方法的。怎么才可以ab都能调用呢?那就给构造函数增加 一个prototype的sum方法时,变量ab都可以调用那个方法。可以这么想,构造器是一个爸爸,ab是他的儿子,爸爸有的东西儿子都可以有,但是大 儿子自己独有的东西小儿子是不会有的。
prototype这里说的不是很详细,想仔细了解的话可以看这里:
http://www.cnblogs.com/mindsbook/archive/2009/09/19/javascriptYouMustKnowPrototype.html
有什么意见欢迎交流。
js----对象的创建的更多相关文章
- js 对象的创建方式和对象的区别
js一个有三种方法创建对象,这里做一个总结. 1.对象直接量 所谓对象直接量,可以看做是一副映射表,这个方法也是最直接的一个方法,个人比较建议, 1 2 3 4 5 6 7 8 9 10 11 12 ...
- js对象的创建
一.通过对象直接量来创建 var emptyt={}; //相当于var empty=new Object; //如果属性名中包含空格.连字符(-).还有关键字,保留字时,要用字符串表示 var b ...
- js对象的创建与原型总结
//1 新建对象 var box = new Object(); box.name = "lee"; box.age = 100; box.run = function(){ re ...
- js对象的创建模式
方式一: Object构造函数模式 * 套路: 先创建空Object对象, 再动态添加属性/方法 * 适用场景: 起始时不确定对象内部数据 * 问题: 语句太多 /* 一个人: name:" ...
- JS对象的创建与使用
本文内容: 1.介绍对象的两种类型: 2.创建对象并添加成员: 3.访问对象属性: 4.利用for循环枚举对象的属性类型: 5.利用关键字delete删除对象成 ...
- js对象的几种创建方式和js实现继承的方式[转]
一.js对象的创建方式 1. 使用Object构造函数来创建一个对象,下面代码创建了一个person对象,并用两种方式打印出了Name的属性值. var person = new Object(); ...
- JS对象与PHP对象的对比
一.对象的创建与访问 1.JS对象的创建与访问 //方式一(通过内置构造函数创建后添加属性) var obj = new Object(); obj.name = 'Lucy'; //通过点添加属性 ...
- javascript基础-js对象
一.js对象的创建 1.普通最简单的方式 var teacher = new Object( ); teacher.name = "zhangsan"; teacher.age = ...
- 浅谈Js对象的概念、创建、调用、删除、修改!
一.我们经常困惑,对象究竟是什么,其实这是一种思维,一种意识上的东西,就像我们都说 世界是有物质组成的道理一样,理解了下面的几句话!对象也不是那么抽象! 1.javascript中的所有事 ...
- js中对象的创建
json方式,构造函数方式,Object方式,属性的删除和对象的销毁 <html> <head> <title>js中的对象的创建</title> &l ...
随机推荐
- LeetCode38 Count and Say
The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...
- http协议学习(一)http状态
整理了一个脑图,算作是<图解HTTP>的读书笔记,这本书有很多插图,适合初学者入门理解. 讲解网络协议的书不多 其中两本被人们奉为圣经 <TCP/IP详解 卷一> <H ...
- J2SE J2EE J2ME的区别
J2SE J2EE J2ME的区别 J2SE J2EE J2ME的区别多数编程语言都有预选编译好的类库以支持各种特定的功能,在Java中,类库以包(package)的形式提供,不同版本的Java提供不 ...
- Code Jam 2008 APAC local onsites Problem C. Millionaire —— 概率DP
题意: 你有X元钱,进行M轮赌博游戏.每一轮可以将所持的任意一部分钱作为赌注(赌注为0元表示这一轮不押),赌注可以是小数的,不是一定要整数.每一轮 赢的概率为P,赢了赌注翻倍,输了赌注就没了.如果你最 ...
- C#实现DNS解析服务
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnUAAAENCAIAAADmDAQyAAAat0lEQVR4nO3dbXRU9YHH8ftq2+1uT7
- NSOperation与GCD之间的关系
NSOperation与GCD的相同之处 1.NSOperation和NSOperationQueue实现多线程的步骤: 先将需要执行的操作封装到一个NSOperation对象中. 然后将NSOper ...
- 【JS对象、JSON字符串】之间的相互转换
在Firefox,chrome,opera,safari,ie9,ie8等浏览器直接可以用JSON对象的stringify()和parse()方法. 1.JSON.stringify(obj)将JS对 ...
- BI中PowerDesigner建模
PowerDesigner下载: http://pan.baidu.com/share/link?shareid=296749&uk=1479845243
- C++之vector用法
1.插入配对 std::vector<pair<int,int> > w; w.push_back(make_pair<int,int>(f,s) ); cout ...
- 话说Centos下nginx,php,mysql以及phpmyadmin的配置
大话centos下部署phalcon框架 Centos还是ubuntu? 当我沿用这个标题的时候,心里在想"我能说我之前用的windows吗?",windows下xampp,wam ...