您现在的位置:首页 --> JavaScript --> javascript定义对象的几种方法
javascript定义对象的几种方法
浏览:1034次 出处信息
本文总结javascript中定义对象的几种方式:
1、基于已有对象扩充其对象和方法(只适用于临时的生成一个对象)
var obj = new Object(); obj.name = 'userObject'; obj.printName = function(name) { this.name = name; // 将属性name赋值为参数name alert(this.name); } obj.printName("newUserObject");
2、工厂方式创建对象
每次创建一个object以后,其中对应的方法也被创建一次,方法不能被创建的所有对象共享。
(1)不带参数的构造方法
function createObject() { var obj = new Object(); obj.name = 'userObject'; obj.password = '123456'; obj.get = function() { alert(this.name + ',' + this.password); }; return obj; // 记得加上这句,返回一个对象 } var obj1 = createObject(); var obj2 = createObject(); obj1.get(); obj2.get();
(2)带参数的构造方法
function createObject(userName, password) { var obj = new Object(); obj.userName = userName; obj.password = password; obj.get = function() { alert(this.userName + ',' + this.password); }; return obj; } var obj1 = createObject('yedward', '123456'); obj1.get();
(3)让函数被多个对象共享
function get() { alert(this.userName + ',' + this.password); } function createObject(userName, password) { var obj = new Object(); obj.userName = userName; obj.password = password; obj.get = get; // 将外面定义的方法赋进来 return obj; } var obj1 = createObject('yedward','123445'); var obj2 = createObject('yedyed','23424'); obj1.get(); obj2.get();
3、构造函数方式
(1)无参构造函数
function Person() { this.userName = 'yedward'; this.password = '124234'; this.get = function() { alert(this.userName + ',' + this.password); }; } var person = new Person(); person.get();
(2)有参数构造函数
function Person(userName, password) { this.userName = userName; this.password = password; this.get = function() { alert(this.userName + ',' + this.password); }; } var person = new Person('yedward','111111'); person.get();
4、使用原型(prototype)方式
代码1:
function Person() { Person.prototype.userName = 'yedward'; Person.prototype.password = '123456'; Person.prototype.get = function() { alert(this.userName + ',' + this.password); }; } var person1 = new Person(); var person2 = new Person(); //person1.userName = 'xiaoye'; Person.prototype.userName = 'xiaoye'; person1.get(); person2.get();
代码2:
function Person() { Person.prototype.userName = new Array(); Person.prototype.password = '123456'; Person.prototype.get = function() { alert(this.userName + ',' + this.password); }; }; var person1 = new Person(); var person2 = new Person(); // 共享对象中的属性,一个对象属性的改变也会反应到其他的对象上。 person1.userName.push('zhangsan'); person1.userName.push('lisi'); // 但是运行结果可以发现,password的改变并没有反应到其他对象上! person1.password = '67889'; person1.get(); person2.get();
5、动态原型方式
在构造函数中通过标志量让所有对象共享一个方法,而每个对象拥有自己的属性。
function Person() { this.userName = 'yedward'; this.password = '1234535'; if (typeof Person.flag == 'undefined') { // 往原型上添加get方法,并且只添加了一次! Person.prototype.get = function() { alert(this.userName + ',' + this.password); } Person.flag = true; } }; var person1 = new Person(); var person2 = new Person(); person1.get(); person2.get();
以上方法均可使用,具体使用哪个视情况而定!
建议继续学习:
- 面向对象的Shell脚本 (阅读:5210)
- 用星际争霸讲解面向对象的概念 (阅读:4207)
- 使用PHP创建一个面向对象的博客 (阅读:4132)
- PHP面向对象编程的三大特性 (阅读:3449)
- 面向对象设计模式的核心法则 (阅读:3234)
- PHP内核介绍及扩展开发指南―类和对象 (阅读:3073)
- 对象的消息模型 (阅读:2558)
- jQuery之jQuery方法总是返回jQuery对象 (阅读:2423)
- 我所偏爱的 C 语言面向对象编程范式 (阅读:2126)
- 细说JavaScript中对象的属性和方法 (阅读:2171)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:JavaScript初体验
后一篇:js代码因逗号不规范导致IE不兼容的问题 >>
文章信息
- 作者:叶德华的博客 来源: 叶德华的博客
- 标签: 对象
- 发布时间:2016-02-11 16:23:48
建议继续学习
近3天十大热文
- [70] IOS安全–浅谈关于IOS加固的几种方法
- [69] Twitter/微博客的学习摘要
- [64] 如何拿下简短的域名
- [63] Go Reflect 性能
- [63] android 开发入门
- [61] find命令的一点注意事项
- [59] 流程管理与用户研究
- [58] Oracle MTS模式下 进程地址与会话信
- [58] 图书馆的世界纪录
- [58] 读书笔记-壹百度:百度十年千倍的29条法则