JS笔记2 --定义对象
16.javascript中定义对象的几种方式(javascript中没有类的概念,只有对象):
1)基于已有对象扩充其属性和方法:
- var object = new Object();
- object.name = "zhangsan";
- object.sayName = function(name){
- this.name = name;
- alert(this.name);
- }
- object.sayName("lisi");
2)工厂方式:
- //工厂方式创建对象
- function createObject(){
- var object = new Object();
- object.username = "zhangsan";
- object.password = "123";
- object.get = function(){
- alert(this.username + ", " + this.password);
- }
- return object;
- }
- var object1 = createObject();
- var object2 = createObject();
- object1.get();
- //带参数的构造方法
- function createObject(username,password){
- var object = new Object();
- object.username = username;
- object.password = password;
- object.get = function(){
- alert(this.username + ", " + this.password);
- }
- return object;
- }
- var object1 = createObject("zhangsan","123");
- object1.get();
- //让一个函数被多个对象共享,而不是每一个对象拥有一个函数对象
- function get(){
- alert(this.username + ", " + this.password);
- }
- function createObject(username,password){
- var object = new Object();
- object.username = username;
- object.password = password;
- object.get = get;
- return object;
- }
- var object1 = createObject("zhangsan","123");
- var object2 = createObject("lisi","456");
- object1.get();
- object2.get();
3)构造函数方式:
- function Person(){
- //在执行第一行代码前,js引擎会为我们生成一个对象
- object.username = "zhangsan";
- object.password = "123";
- object.getInfo = function(){
- alert(this.username + ", " + this.password);
- }
- //此处有一个隐藏的return语句,用于将之前生成的对象返回
- }
- var person = new Person();
- person.getInfo();
- //可以在构造对象时传递参数
- function Person(username,password){
- //在执行第一行代码前,js引擎会为我们生成一个对象
- object.username = username;
- object.password = password;
- object.getInfo = function(){
- alert(this.username + ", " + this.password);
- }
- //此处有一个隐藏的return语句,用于将之前生成的对象返回
- }
- var person = new Person("zhangsan","123");
- person.getInfo();
4)原型 ("prototype")方式:
- //使用原型 (prototype)方式创建对象
- function Person(){
- }
- Person.prototype.username = "zhangsan";
- Person.prototype.password= "123";
- Person.prototype.getInfo = function(){
- alert(this.username + ", " + this.password);
- }
- var person1 = new Person();
- var person2 = new Person();
- person1.username = "lisi";
- person1.getInfo();
- person2.getInfo();
- //
- function Person(){
- }
- Person.prototype.username = new Array();
- Person.prototype.password= "123";
- Person.prototype.getInfo = function(){
- alert(this.username + ", " + this.password);
- }
- var person1 = new Person();
- var person2 = new Person();
- person1.username.push("zhangsan");
- person1.username.push("lisi");
- person1.password= "456";
- person1.getInfo();
- person2.getInfo();
- //使用原型 + 构造函数方式来定义对象
- function Person(){
- this.username = new Array();
- this.password= "123";
- }
- Person.prototype.getInfo = function(){
- alert(this.username + ", " + this.password);
- }
- var person1 = new Person();
- var person2 = new Person();
- person1.username.push("zhangsan");
- person2.username.push("lisi");
- person1.getInfo();
- person2.getInfo();
5)动态原型方式:在构造函数中通过标志量让所有对象共享一个方法,而每个对象拥有自己的属性。
- function Person(){
- this.username = new Array();
- this.password= "123";
- if(typeof Person.flag == "undefined"){
- alert("invoked");
- Person.prototype.getInfo = function(){
- alert(this.username + ", " + this.password);
- }
- Person.flag = true;
- }
- }
- var person1 = new Person();
- var person2 = new Person();
- person1.getInfo();
- person2.getInfo();
JS笔记2 --定义对象的更多相关文章
- js笔记19 事件对象
1.常用的事件 onmouseover onmouseout onmousedown onmousemove onmouseup onclick onchange onfocus o ...
- js 笔记 数组(对象)
一.javascript push 的元素为指针 var data = {"test":{"201308":"23","20130 ...
- js定义对象的几种容易犯的错误
//js定义对象的几种容易犯的错误function Person() { getName = function (){ console.info(1); }; return this;}//Perso ...
- JavaScript学习12 JS中定义对象的几种方式
JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...
- JS 学习笔记--11---内置对象(Global/Math)
练习中使用的浏览器是IE10,如果各位朋友有不同意见或者遇到浏览器不兼容问题,希望指正 1.内置对象的定义:有ECMAScript实现提供的.不依赖与宿主环境的对象,在ECMAScript运行之前就已 ...
- JavaScript学习12 JS中定义对象的几种方式【转】
avaScript学习12 JS中定义对象的几种方式 转自: http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. ...
- js中定义对象的几种方式
转载:http://blog.sina.com.cn/s/blog_60f632050100wz7h.html (1)基于已有对象的扩充方法:适用于临时构建对象,弊端:每次构建对象都要新建一个. va ...
- JS中定义对象和集合
在js中定义对象: 方式一: var obj = {}; obj['a']=1; obj['b']=2; 方式二: var obj=new Object(); obj.a=1; obj.b=2; 在j ...
- JS笔记(二):对象
(一) 对象 对象是JS的基本数据类型,类似于python的字典.然而对象不仅仅是键值对的映射,除了可以保持自有的属性,JS对象还可以从一个称为原型的对象继承属性,对象的方法通常是继承的属性.(这种对 ...
随机推荐
- 数论(毕达哥拉斯定理):POJ 1305 Fermat vs. Pythagoras
Fermat vs. Pythagoras Time Limit: 2000MS Memory Limit: 10000K Total Submissions: 1493 Accepted: ...
- ZOJ1025-最长下降子序列
ZOJ1025-Wooden Sticks 加工木棒问题 [问题描述] 现有n根木棒,已知它们的长度和重量.要用一部木工机一根一根地加工这些木棒.该机器在加工过程中需要一定的准备时间用于清洗机器.调整 ...
- jquery ajaxform上传文件返回不提示信息的问题
在使用jquery的ajaxform插件进行ajax提交表单并且上传文件的时候,返回类型datatype :json但是后台通过写出一个json对象后,在执行完以后没有进入success函数,而是直接 ...
- Android源码学习
http://android-wheel.googlecode.com/svn/trunk/android-wheel-read-only 在github上面有一个叫做 android-wheel 的 ...
- [2012山东省第三届ACM大学生程序设计竞赛]——n a^o7 !
n a^o7 ! 题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2413 Time Lim ...
- Leetcode - Reverse Words
比起POJ弱爆了一题,从后往前扫描一遍,O(n)时间,仅仅要注意各种极端情况就可以,不明确通过率为什么仅仅有13%. #include<iostream> #include<stri ...
- 我的搜索优化记录(一):中文分词优化IK Analyzer
搜索绝对不仅仅是搭起框架,跑出结果就完成的工作,之后分词.排序等等的优化才是重头戏. 先交代下背景:这个搜索是我一个人负责搭建并优化的项目,主要索引对象为歌曲.歌手MV等等. 使用技术:Lucene. ...
- Android GridView属性集合
GridView的一些特殊属性: 1.android:numColumns=”auto_fit” //GridView的列数设置为自动 2.android:columnWidth=”90dp &q ...
- mysql源码分析
http://blog.csdn.net/u012935160/article/category/2697485
- Android(java)学习笔记238:多媒体之图片画画板案例
1.首先我们编写布局文件activity_main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.com/a ...