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对象还可以从一个称为原型的对象继承属性,对象的方法通常是继承的属性.(这种对 ...
随机推荐
- 【转】Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
原文网址:http://www.cnblogs.com/skywang12345/p/3308556.html 上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具 ...
- 【并查集】【模拟】Codeforces 698B & 699D Fix a Tree
题目链接: http://codeforces.com/problemset/problem/698/B http://codeforces.com/problemset/problem/699/D ...
- python BDD&TDD
教程一:行为驱动开发(BDD) 基于Python的行为驱动开发实战: http://python.jobbole.com/81303/ 基于Python的行为驱动开发实战 英语原文地址: http:/ ...
- Golang下通过syscall调用win32的dll(calling Windows DLLs from Go )
很多同学比如我虽然很喜欢golang,但是还是需要调用很多遗留项目或者其他优秀的开源项目,这时怎么办呢?我们想到的方法是用package里的syscall结合cgo 注意此处有坑: 在我调试时显示no ...
- angularJS 指令二
指令详解1.用directive()方法来定义指令.directive('myDirective',function($timeout,userDefinedService){ return {};} ...
- greenplum和postgresql
想着要不要写,两个原因"懒"和"空".其实懒和空也是有联系的,不是因为懒的写,而是因为对PostgreSQL和Npgsql的知识了解匮乏,也就懒得写.好了,开头 ...
- convert 时间转换
格式:CONVERT(data_type,expression[,style])说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,c ...
- cocos2d-x 关于tilemap滚动时黑线闪动的问题
改动抗锯齿这个全然没用. 解决问题的方法是开启CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL=1.不是在自己的project中开启,而是改动libcocos2dx库来解决 wa ...
- 构建服务端的AMD/CMD模块加载器
本文原文地址:http://trock.lofter.com/post/117023_1208040 . 引言: 在前端开发领域,相信大家对AMD/CMD规范一定不会陌生,尤其对requireJS. ...
- centos 安装nginx
centos 安装nginx 安装依赖 更换源 yum install http://mirrors.163.com/centos/6.8/extras/x86_64/Packages/epel-re ...