[Javascript OO] 构造函数
来源:互联网 发布:泗洪网络问政 编辑:程序博客网 时间:2024/05/16 09:06
OO: 类的概念, 通过类创建多个具有相同属性和方法的对象
封装 继承 多态
(1) 构造函数-> 创建对象
构造函数虽然首字母要大写,但是还是函数,只不过是用来创建对象的。
构造函数可以创建特定类型的对象。
<script type="text/javascript"> function People(name,age){ // 名称首字母必须大写 this.name=name; // 直接将属性和方法给this对象 this.age=age; //没有return } var jessica=new People("jessica",18); var krystal=new People("krystal",20); console.log(jessica); console.log(krystal); console.log(jessica instanceof People); console.log(krystal instanceof People); console.log(jessica instanceof Object); console.log(krystal.constructor==People); //构造器 指向了People</script>
Result:
(2) * new 经历了4个步骤
eg: var jessica=new People("jessica",18);
[1] 创建一个空的对象 var obj={}
[2] 将构造函数的作用域给新的对象 (this -> obj)
[3] 执行构造函数的代码 (属性和方法给obj)
[4] return obj
(3) 可以创建对象也可以是普通函数
[1] new出现了就是创建一个新obj
[2] 普通
function People(name,age){// 名称首字母必须大写 this.name=name; // 直接将属性和方法给this对象 this.age=age; //没有return this.say=function(){ return this.name+":"+this.age; } } People("ljy",18); window.say();
(4) 构造函数的优点+缺点
优点:
创建对了相似对象(大量的实例化), 也解决了工厂模式的对象识别问题(这个对象是谁创建的, 对象的类型), 因为构造函数可以创建特定类型对象。
缺点:
上面例子说明, jessica和krystal都有共同函数say(), 但是每次new 都要创建一个新的say(), 每次都创建相同的任务是没有必要的
缺点解决:
[1] 将共同的属性或方法转移到全局下
function People(name,age){ this.name=name; this.age=age; this.say=say; } function say(){ return this.name+":"+this.age; }
问题:
虽然解决了问题, 但是此时作用域是在global下, 并且没有封装 [2] 解决了这个问题
[2] prototype 原型的概念
详见下一节
0 0
- [Javascript OO] 构造函数
- Javascript OO 基础概念(一)–构造函数
- Javascript OO
- Javascript -- OO
- oo-javascript
- JavaScript-OO
- Javascript构造函数
- JavaScript构造PHP函数
- JavaScript 构造函数
- JavaScript构造函数
- JavaScript之构造函数
- JavaScript构造函数浅谈
- JavaScript构造函数原理
- javaScript构造函数继承
- JavaScript 构造函数
- javascript构造函数
- JavaScript的构造函数
- javascript 构造函数
- Socket编程(一)TCP传输文件
- ipad标准参数
- “当前不会命中断点。源代码与原始版本不同”解决
- UML——活动图
- 2015-12-01
- [Javascript OO] 构造函数
- 扩展SeaJS模块定义中的module参数的应用示例
- 内联,外联,全联结,交叉联结
- 高性能 TCP & UDP 通信框架 HP-Socket v3.3.2 发布
- Use xargs to pass command to kill a process
- XML的属性和子元素的关系
- \backend\models\core\Array2XML
- 基于stm32的can总线彻底研究
- ListView分批加载数据