18_面向对象程序设计(对象【一】类的创建于实例对象)
2015-03-04 00:00
218 查看
摘要: 了解面向对象程序的特点
学会JS模拟面向对象的方式
面向对象的语言有一个标志,那就是他们都有类的概念,通过类可以创建任意多个具有相同属性和方法的对象。但是在ECMAScript中没有类的概念,但是我们可以通过其他方式来模拟面向对象的类。
创建对象的方式
1、工厂模式:工厂模式是软件工厂领域中一种广为人知的设计模式;
2、构造函数模式:比如像ECMAScript中的Array、Object、Date等都是通过构造函数来创建的。
使用构造函数创建对象的几种方式:
学会JS模拟面向对象的方式
面向对象的语言有一个标志,那就是他们都有类的概念,通过类可以创建任意多个具有相同属性和方法的对象。但是在ECMAScript中没有类的概念,但是我们可以通过其他方式来模拟面向对象的类。
//一个简单的对象 var obj = new Object(); var obj = {}; obj.name = "z3"; obj.sex = "男"; obj.sayName = function(){ console.info("我是张三!"); };
创建对象的方式
1、工厂模式:工厂模式是软件工厂领域中一种广为人知的设计模式;
//对象的创建方式,建议使用构造函数式 //第一种形式 工厂模式 function createPerson(name, sex, age){ var obj = {}; obj.name = name; obj.sex = sex; obj.age = age; obj.sayName = function(){ console.info(this.name); }; return obj; } var p1 = createPerson("z3", "男", 20); var p2 = createPerson("z4", "女", 25); console.info(p1.sex); p2.sayName();
2、构造函数模式:比如像ECMAScript中的Array、Object、Date等都是通过构造函数来创建的。
//第二种 构造函数式 使用new关键字创建 例如new Array() new Date(); function Person(name, age, sex){ this.name = name; this.age = age; this.sex = sex; this.sayName = function(){ console.info(this.name); } } //构造一个对象,使用new关键字 传递参数,执行模版代码,返回对象 var p1 = new Person("xiao A", 20, "男"); var p2 = new Person("xiao B", 21, "女"); console.info(p1.name); p1.sayName(); console.info(p1 == p2); //false 类的概念:根据模版创建不同的实例对象 console.info(p1.constructor === Person); //true console.info(Person.prototype.constructor === Person); //true console.info(p1.constructor == p2.constructor); //true
使用构造函数创建对象的几种方式:
//1 当作构造函数使用 使用new关键字(常用) var p = new Person("abc", 20, "男"); console.info(p); //2 当作一般函数使用 Person("abc", 20, "男"); //在全局环境里定义属性并复制 直接定义在window上 console.info(name); console.info(age); console.info(sex); //3 使用call、apply关键字在另一个对象的作用域中调用 var o = {}; Person.call(o, "abc", 20, "男"); console.info(o); //第一种和第三种方式还是有区别的 console.info(p instanceof Object); //true console.info(p instanceof Person); //true console.info(o instanceof Object); //true console.info(o instanceof Person); //false
相关文章推荐
- 18--26 面向对象程序设计22(创建一个原生的原型)
- 面向对象的程序设计学习笔记-18-静态数据成员实例
- PHP面向对象程序设计实例分析
- 读Javascript高级程序设计第三版第六章面向对象设计--创建对象
- JS面向对象程序设计之创建对象模式
- 第6章:面向对象的程序设计--创建对象
- JavaScript面向对象实例——创建日志调试对象来代替alert函数进行调试
- 面向对象的程序设计(三)对象字面量创建原型方法与直接创建原型方法的区别
- 18--26 面向对象程序设计24(深入解析原型继承的概念)
- 面向对象的程序设计-14-用虚函数实现价格的统计(实例)
- javascript笔记3-面向对象的程序设计-创建对象
- [.net 面向对象程序设计进阶] (5) Lamda表达式(一) 创建委托
- [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序
- 18--26 面向对象程序设计25(继承的三种方式)
- PHP面向对象程序设计实例分析
- 面向对象的程序设计-26-对于商品库存量计算的实例
- JavaScript面向对象实例——创建日志调试对象来代替alert函数进行调试
- javascript复习笔记五----面向对象程序设计(创建对象)
- 面向对象程序设计实例——模拟网上购书的结帐功能
- PHP面向对象程序设计之类常量用法实例