[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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 解压包文件数据损坏该怎么办 电脑被压缩后电脑打不开怎么办 眼睛里进了飞虫怎么办 虫子飞到眼睛里怎么办 云电脑pc版双鼠标怎么办 电脑蓝屏代码7f怎么办 笔记本电脑蓝屏开不了机怎么办 装xp系统后蓝屏怎么办 一键ghost断电了怎么办 如何防止cpu降频怎么办 win7 64位系统不兼容怎么办 网页无法加载打印机插件怎么办 微信提示安装了插件怎么办 电脑上不了网怎么办 win10 win10电脑突然没网了怎么办 笔记本玩战争前线发热严重怎么办 玩战争前线总是闪退怎么办 uu加速器卡在29怎么办 新ipad下载不了东西怎么办 福昕pdf阅读器找不到图章怎么办 战地4没达到分数怎么办 植物在太暗环境怎么办 玩绝地求生机型不支持怎么办 安卓安装包损坏怎么办 方舟手游安装包损坏怎么办 7p新机耗电快怎么办 不小心把图片删了怎么办 腿上毛又长又多怎么办 征兵体检体重太轻怎么办 体检发现颈部有淋巴节怎么办? 4岁宝宝汗毛重怎么办 嘴巴张开闭不上怎么办 口张开闭不上怎么办 要去当兵有痔疮怎么办 狗舔的东西吃了怎么办 婚检说生过孩子怎么办 劳动法规定身体有疾病的怎么办 铁路对职工醉驾怎么办 入职体检高血糖怎么办 睾丸捏一下很疼怎么办 小孩睾丸受外力红肿该怎么办